`
ming_fanglin
  • 浏览: 223477 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论
阅读更多
#

@interface Event : NSManagedObject {}
@property (nonatomic, retain) NSDate *creationDate;
@property (nonatomic, retain) NSNumber *latitude;
@property (nonatomic, retain) NSNumber *longitude;
@end

#import "Event.h"
@implementation Event
@dynamic creationDate;
@dynamic latitude;
@dynamic longitude;
@end

从上面我们能看出来,一个实体Event也就会被生成一个NSManagedObject(被管理对象),然后任何accessor和getter 都是被动态生成的,我们其实完全不用操任何的心,只需要在xcdatamodel文件里面配置后,点击添加文件,添加NSManagedObject文件,就会看到自动感知的类对象,然后生成就可以了。
下面是根视图控制器,是一个列表视图(UITableViewController)

#import <CoreLocation/CoreLocation.h>
@interface RootViewController : UITableViewController <CLLocationManagerDelegate> {
//看到是UITableViewController的子类,由于需要使用Core Location,
//所以在后面履行其protocal
NSMutableArray *eventsArray;
NSManagedObjectContext *managedObjectContext;
//这个被管理对象内容器就是我们真正对Core Data数据的操作对象
CLLocationManager *locationManager; //用来得到地理位置的Core Location对象
UIBarButtonItem *addButton; //右上角的添加键
}
@property (nonatomic, retain) NSMutableArray *eventsArray;
@property (nonatomic, retain) [...]

CoreData 实例分析学习(1)补

CoreData实例分析学习(1)
补一下“实体”的概念,实体也就是Entity,在打开xcdatamodel文件的时候,我们可以看到

在这里,这个实体叫“Event”,而实体的参数有“创建日期”,“纬度”,“经度”。也就是说,其实这个实体被使用后,我们可以这样理解,实体就是表名,而参数就是列名,然后整个实体就是一张表。当这个Model描述多个实体的关系的时候,就像是一个关系型数据库一样,虽然苹果说“不是!”

CoreData 实例分析学习(1)

Core Data是个好东西,在数据储存操作上速度快,容易操作,是一种类似关系数据库的东西。但是有些不那么好学,那到底Core Data是怎么操作的呢?怎么用呢?怎么来编程呢?我们一起来学习吧,接下来使用苹果提供的实例程序Locations来作分析:
>程序介绍:
右侧是改程序的截图,基本上来说就是通过使用Core Location来得到当时的位置,然后在点击“+”的时候记录下当时的经纬度。通过UITableViewController的功能来添加,编辑,删除等功能。整体程序使用Core Data来储存数据,实体(Entity)为一个位置,包括以下参数:1,时间(收集数据的时间)2,纬度,3,经度
首先我们看看该程序的AppDelegate.h

@interface LocationsAppDelegate : NSObject {
UIWindow *window;
UINavigationController *navigationController; //导航栏

//以下定义了Core Data的三个决定性组建,等后面m文件里面再多介绍
NSPersistentStoreCoordinator *persistentStoreCoordinator;
NSManagedObjectModel *managedObjectModel;
NSManagedObjectContext *managedObjectContext;
}

@property (nonatomic, retain) IBOutlet UIWindow *window;
@property (nonatomic, retain) UINavigationController *navigationController;

- (IBAction)saveAction:sender; //这个没找到作用…根本就没用到IB

//还记得吧,nonatomic是因为这个程序是单线程
@property (nonatomic, retain, readonly) [...]

得到用户的首选语言

NSUserDefaults* defs = [NSUserDefaults standardUserDefautls];
//得到用户缺省值

NSArray* languages = [defs objectForKey:@"AppleLanguages"];
//在缺省值中找到AppleLanguages, 返回值是一个数组

NSString* preferredLang = [languages objectAtIndex:0];
//在得到的数组中的第一个项就是用户的首选语言了

简单 iPhone视频播放器(1)补

在使用MP库之前是需要将其导入的,上次忘记了,这回将截图发上来
首先在左侧找到Targets
然后打开,双击这个工程名
你就可以看到下面的图了

点击左下角的+号

找到MediaPlayer.framework

然后点Add,完成!!
之后就只需要在需要使用库的地方添加下面的代码拉~

#import "MediaPlayer/MediaPlayer.h"


简单 iPhone视频播放器(1)

本程序源代码,不包含视频文件
视频播放在iPhone中是再重要不过了,今天要在30行内解决iPhone视频播放的问题!
1,建立工程MPtest1

2, 建立一个UIViewController类 MyMPViewController

3, 设置MPtest1AppDelegate初始化并添加MyMPViewController的view到window

@interface MPtest1AppDelegate : NSObject <UIApplicationDelegate> {
UIWindow *window;
MyMPViewController *mpViewController;
}
@end
- (void)applicationDidFinishLaunching:(UIApplication *)application {
mpViewController = [[MyMPViewController alloc] init];
[window addSubview:mpViewController.view];
[window makeKeyAndVisible];
}

4, 设置MyMPViewController在一个按钮点击后播放视频

@interface MyMPViewController : UIViewController {
UIButton *playButton;
}
@end

@interface MyMPViewController()
- (void)playVideo;
@end
@implementation MyMPViewController
- (id)init
{
if (self = [super init]) {
playButton = [[UIButton buttonWithType:UIButtonTypeRoundedRect] retain];
//在这里初始化那个按键
playButton.frame = CGRectMake(100, 100, 100, 30);
[self.view addSubview:playButton];
}
return self;
}

- (void)viewDidLoad [...]

retain 和copy的区别

原来简单解释过属性定义(Property) ,并且提起了简单的retain,copy,assign的区别。那究竟是有什么区别呢?
assign就不用说了,因为基本上是为简单数据类型准备的,而不是NS对象们。
Retain vs. Copy!!

copy: 建立一个索引计数为1的对象,然后释放旧对象
retain:释放旧的对象,将旧对象的值赋予输入对象,再提高输入对象的索引计数为1

那上面的是什么该死的意思呢?
Copy其实是建立了一个相同的对象,而retain不是:
比如一个NSString对象,地址为0×1111,内容为@”STR”
Copy到另外一个NSString之后,地址为0×2222,内容相同,新的对象retain为1,旧有对象没有变化
retain到另外一个NSString之后,地址相同(建立一个指针,指针拷贝),内容当然相同,这个对象的retain值+1
也就是说,retain是指针拷贝,copy是内容拷贝。哇,比想象的简单多了…

在 iPhone上显示LCD效果

我看到一个程序是这样样子的:

哇!好厉害,怎么弄出来的!难道要用Q2D画出来么?
不… …
其实这就是UILabel外加一个奇异的字体 DBLCDTempBlack
And, that’s it! 生活多么美好阿~

不要对 viewController作这样的事情

错误:

UIViewController *aViewController = [[UIViewController alloc] init];

[window addSubview:aViewController.view];

[aViewController release];

这样的话,系统会崩溃的… window或着其他父视图是不会retain整个viewController的,这个时候不能立刻release
正确:

[aViewController.view removeFromSuperview];

[aViewController release];

也就是说,在release之前需要从superview中移除这个viewController的view。如果一直都需要这个view,那就在 dealloc里面作这些事情就可以了

数据类型/ 对象类型介绍(1)NSString

字符串是程序设计最常用的数据类型之一了。在Mac/iPhone编程中,苹果为我们提供了一个不同的字符串类型 NSString。有别与普通的String为数据类型,NSString其实是一个对象类型。NSString是NSObject(Cocoa Foundation的基础对象)的子类,所以具有NSObject的所有特性,好的和好的… ….
小常识:
NS是Cocoa类对象类型的前缀,来源于史蒂夫-乔布斯被苹果开除那段时间建立的公司NeXT.
@是Cocoa元素的前缀,很多地方我们会看到,比如接下来…
1, 创建一个NSString对象
简单方法:

NSString *aString = @"我是个NS字符串!"; //除了引号外加@, 没别的区别

*上面的不需要操心内存管理哟~
复杂一点儿:(需要内存管理的)

NSString *aString = [[NSString alloc] initWithFormat:@"这也是个NS字符串!"];

*initWithFormat是其中一个初始化方法,常用的还有

//从一个文件读取需要的内容
- (id)initWithContentsOfFile:(NSString *)path encoding:(NSStringEncoding)enc error:(NSError **)error
//从一个地址读取需要的内容
- (id)initWithContentsOfURL:(NSURL *)url encoding:(NSStringEncoding)enc error:(NSError **)error

*以上方法得到的NSString的retain值为1,所以记得release掉阿~~
2,使用一个NSString对象

NSString *aString = @"This is a NSString";

NSLog(aString); //在控制台输出信息,该函数方法需要一个NSString对象作为参数

NSLog("这样不会好使的");

NSLog(@"这样就会好使拉~");

再比如设置一个UIView的标题:

[UIView setTitle:aString];

[UIView setTitle:@"标题"];

UIView.title = aString;

3,释放NSString

[aString release]; //对象将被系统释放掉咯

*记得不要释放直接用 = @”xxx” 的NSString对象哟,系统会管的~
4,快速使用一个NSString

NSLog([NSString stringWithFormat:@"一个NS字符串"]);

//这种快速方法返回的是一个retain为1,autorelease的对象,不需要操心它的内存管理
5,常用方法
我喜欢NSString的地方就在于很多方法非常方便,比如:

nString = [aString substringToIndex:4]; //nString将得到aString中的前四个字符


分享到:
评论
3 楼 xupf1977 2010-07-14  
很有用,谢谢分享
2 楼 dazuiba 2010-06-06  
不错,   Iphone的帖子太少了,  投精先!

说object-c 2支持 dot方式的消息传递,也就是支持 aString.substringToIndex(4)

那现在的Iphone用的哪个版本的object-c? 
1 楼 Random.Ghost 2010-05-27  
楼主果然是经过研究才写上来的..受益了...

相关推荐

    iPhone笔记-Object-c基础

    【Object-c基础详解】 在Objective-C(Object-c)编程中,它是Apple的Cocoa和Cocoa Touch框架的基础,主要用于开发iOS和macOS应用程序。本文将深入探讨Object-c的基础知识,包括指令、类、实例化、访问权限、方法等...

    iphone笔记

    ### iPhone应用生命周期管理知识点 #### 一、应用生命周期概述 在iOS开发中,理解应用程序的生命周期至关重要。这有助于开发者合理地安排程序的行为,确保在不同的运行状态下能够正确处理各种事件,比如用户交互、...

    最新iphone小知识

    ### 最新iPhone小知识详解 #### 密码锁机时的快速拨号技巧 当iPhone处于密码锁定状态,用户若需紧急拨打电话,无需经历解锁、进入电话应用、调出键盘等一系列步骤。只需在输入密码界面左下角点击“紧急呼叫”按钮,...

    win7笔记本一键设置wifi热点共享iphone4上网+配置方法

    在Windows 7操作系统中,创建一个Wi-Fi热点可以让其他设备如iPhone 4通过笔记本电脑共享网络连接,这对于没有Wi-Fi环境或者需要节省移动数据时非常有用。以下将详细讲解如何在Win7笔记本上进行这项设置,以及如何...

    BO.iPhone云笔记

    BO.iPhone云笔记

    通 用IPhone通过笔记本上网

    为了用好iPhone的WIFI功能,一直以来我们都是通过连接无线路由器来实现iPhone的无线上网功能,最近发现了一个不用无线路由器也能使iPhone WIFI上网,经本人的笔记本试验可行,故写下些心得与大家分享 首先我们需要...

    懒人笔记 一个 iOS 开源笔记 App.zip

    《懒人笔记:一个iOS开源笔记App的深度解析》 懒人笔记,作为一个曾经活跃的iOS开源项目,为开发者提供了一个便捷的、可定制化的笔记应用框架。虽然它已不再维护,但其代码库仍能为我们揭示iOS应用开发的一些关键...

    iPhone 开发笔记实录(代码讲解)

    在iOS开发中,Core Data是苹果提供的一种强大的数据持久化框架,它简化了数据库操作,使得开发者能够更专注于应用程序的业务逻辑。本文将基于提供的代码片段和描述,深入讲解Core Data的基本概念、实体(Entity)、...

    IPhone开发常用技术笔记汇总

    本压缩包中包含了Iphone开发中常用到的技术总结笔记,五六十中技术方法以及季节方案,包括内存管理,方法回调,获取当前地点,自定义CELL,VIew圆角等等等,太多的奶水包,是我开发中所有的精华所在,只有你不知道的...

    iphone开发资料

    iphone开发笔记.iphone开发笔记.iphone开发笔记.iphone开发笔记.

    iPhone开发基础教程_学习笔记

    在iOS开发领域,尤其是针对iPhone应用的开发,掌握基本的技术框架和编程语言是至关重要的。本教程主要聚焦于iPhone开发的基础知识,包括Object-C语言、界面设计和UIViewController的使用。 Object-C是iOS开发的主要...

    iphone开发一年的工作笔记

    ### iPhone开发一年的工作笔记知识点详解 #### 文档概述 该文档是作者从事iOS开发一年以来,针对工作中常用到的200多个iOS知识点进行总结整理的成果。文档中不仅包含了知识点的简要介绍,还提供了可运行的示例代码...

    iOS史上最全的UI笔记

    首先,笔记提到了UIUserInterfaceIdiom,这个术语涉及到根据设备的类型(比如iPhone还是iPad)来提供合适的界面。在iOS开发中,开发者需要考虑到不同设备的屏幕尺寸和方向,为用户提供适合其设备的最佳体验。例如,...

    IPHONE维修不是事儿-电子档下载.pdf

    从提供的文件信息中,我们可以提炼出知识点集中在iPhone维修领域。文件的标题为“IPHONE维修不是事儿”,这表明文档可能是一本关于如何维修iPhone的指南或者手册。描述中没有给出更多具体信息,而标签直接指出文档...

Global site tag (gtag.js) - Google Analytics