self.list = playList;
- (id)init {
if (self = [super init]) {
[self createDemoData];
}
return self;
}
static NSString *CellIdentifier = @"CellIdentifier";
你好,我仍然不知道什么时候使用这两个关键字,特别是静态的。什么时候使用静态变量和自我关键字
self.list = playList;
- (id)init {
if (self = [super init]) {
[self createDemoData];
}
return self;
}
static NSString *CellIdentifier = @"CellIdentifier";
你好,我仍然不知道什么时候使用这两个关键字,特别是静态的。什么时候使用静态变量和自我关键字
只是为了你指出正确的方向:
静态:https://stackoverflow.com/a/1250088/267892
问题描述:
- 您希望您的ClassA的有一个ClassB类变量。
- 您正在使用Objective-C作为编程语言。
- Objective-C不像C++那样支持类变量。
一个备选:
模拟使用Objective-C类变量行为设有
申报/所述classA.m内定义一个静态变量所以这将是仅访问classA方法(以及你把 放在classA.m中的所有东西)。
覆盖NSObject的初始化类方法,初始化一个静态变量与一个ClassB的实例。
你会想知道为什么要覆盖NSObject的初始化方法。有关此方法的Apple文档有 答案:“运行时恰好在该类之前发送一个程序 中的每个类的初始化或任何继承 的类从程序中发送它的第一条消息。因此,如果不使用类,则永远不会调用 方法。)“。
随意使用任何ClassA类/实例方法中的静态变量。
自:https://stackoverflow.com/a/2386015/267892
采用自主导致你的类的 “二传手”,此变量被调用, 而不是直接改变了伊娃。
self.mainViewController = aController;
等同于:
[self setMainViewController:aController];
在另一方面:
mainViewController = aController;
只是直接改变mainViewController实例变量, 跳过可能被内置到 任何额外的代码UIApplication的setMainViewController方法,比如释放旧的 对象,保留新对象,upd处理内部变量等。
它也很好地知道你可以保护你的实例变量,如果你声明它们是私人的,只需在你的.h中定义你的属性。在你的实现中,你将你的属性定义为读写。如果使用下划线_Example编写实例变量,并使用非下划线属性@synthesize示例= _Example进行合成,则可以实现更多保护。一个使用你的班级的人必须通过你的自定义setter和你的自定义getter,它提供了很多保护。顺便说一句,封装有更多的方法。比如仅在您的实现中声明您的实例。 – 2012-01-07 00:33:25
你试过Google吗?我听说这样做非常有效。 – Emil 2012-01-06 23:36:32
你被低估了,因为你问了一个关于两个广泛主题的非常模糊的问题。没有办法简单回答这样一个开放式问题。如果你编辑你的问题,并进一步澄清你的问题是什么,你可能会得到更好的帮助。关于自我和静态(它们根本不相互关联......)你无法理解的是什么? – 2012-01-06 23:52:37