2. NSLog():该函数的功能与C语言中的printf()非常相似。 NSLog() 接受一个字符串作为第一个参数,该参数可以包含格式说明符(例如%d)。该函数还可以接受与格式说明符匹配的附加参数。这里的“NS”是Cocoa在其所有函数、常量和类型名称中添加“NS”前缀。当两个不同的事物使用相同的标识符时,前缀可以防止名称冲突。
3.间接:基本变量是间接的实际应用。文档也是间接的一个例子。
4. Objective-C不支持多重继承。例如:@interface Circle:NSObject、PrintableObject将不会被编译器识别。
5.超类:就是你继承的类。
父类:是超类的另一种表达方式。
子类:是实现继承的类。
子类:是子类的另一种表达方式。
6. 多态性:使用更具体类型的对象(矩形或圆形)而不是通用类型(形状)的能力称为多态性。
7. super关键字:Objective-C提供了一种重写方法并仍然调用超类的实现的方法。当超类需要实现自己的功能,同时在其之前或之后执行一些额外的工作时,此机制非常有用。为了调用继承方法的实现,需要使用super 作为方法调用的目标。当你向super 发送消息时,你实际上是在要求Objective-C 向该类的超类发送消息。
8、如果你使用.mm作为文件扩展名,编译器会认为你正在用Objective-C++编写代码,因此你可以同时使用C++语言和Objective-C来编程。
9、我们的程序中都使用#import,因为这些程序只使用了Cocoa的这部分功能,但是用#import代替也是可以的。该语句不仅导入了Foundation框架的头文件,还导入了一些其他文件。
10、导入头文件有两种方式:使用引号或尖括号。例如#import "Button.h"或者#import,带尖括号的语句用于导入系统头文件,带引号的语句表示导入工程本地的头文件。如果您看到头文件名括在尖括号中,则该头文件对于您的项目是只读的,因为它属于系统。如果头文件名用引号引起来,则可以对其进行编辑。
11. @class:对于循环依赖很有用。即A类使用B类,B类也使用A类。如果使用#import语句使这两个类相互引用,就会出现编译错误。但是如果你在A.h中使用@class B,在B.h中使用@class A,这两个类可以互相引用。
12.Xcode使用提示:
快捷键: 1.command+[和command+]可以将选中的代码向左或向右移动。
2.command+control+s 或File-》Make Snapshot 打开快照窗口。如果您犯了错误,想要恢复到原来的状态,可以打开快照并恢复。
13. NSRange是一个结构体,其定义为
typedef 结构_NSRange{
整数位置;
整数长度;
}NSRange;
相同的结构包括NSPoint、NSSize 和NSRect
14.如果在声明方法时添加加号,则该方法被定义为类方法。该方法属于类对象(而不是类的实例对象),通常用于创建新实例。例如
+(id)stringWithFormat:(NSString *)格式,方法是一个类方法。
如果声明的方法带有减号,则它是实例方法。我们创建的大多数方法都是实例方法。这些方法将在对象实例上运行,例如获取圆的颜色。
如果方法用于实现常规功能,例如创建实例对象或访问某些全局类数据,则最好使用前导加号(+) 将其声明为类方法。
15. 要比较两个字符串,可以使用-(NSComparisonResult)compare:(NSString *)string; //该方法返回一个NSComparisonResult(枚举类型数据)来显示比较结果。
typedef 枚举_NSComparisonResult {
NSOrderedAscending=-1,
NSOrdered相同,
NS有序降序
NSComparisonResult;
16. 如果检查两个对象thing1 和thing2 是否是同一个对象,请使用运算符“==”。
如果您要检查等效性(即两个字符串是否表示相同的事物),请使用isEqualToString: 方法。
17.compare:方法执行区分大小写的比较。
-(NSComparisonResult)compare:(NSString *)字符串options:(uisinged)掩码;
方法参数选项是一个位掩码。您可以使用按位或运算符(|) 添加选项标记。一些常用的选项如下: NSCaseInsensitiveSearch: 不区分大小写字符
NSLiteralSearch:执行完整比较,区分大小写。
NSNumericSearch:比较字符串的数量,而不是字符值。
18. NSArray:只能存储Objective-C对象,不能存储基本数据类型,例如NSArray中的int、float、enum、struct或随机指针。你也不能将nil 存储在NSArray 中,因为将nil 添加到列表末尾就代表了列表的末尾。
19.使用枚举NSEnumerator遍历数组
NSEnumerator *枚举器;
枚举器=[数组对象枚举器];
身份事物;
while (thing=[枚举器nextObject]) {
NSLog("我找到了%@", thing);
}
20.NSArray和NSDictionary只能存储对象,而不能直接存储任何基本类型的数据,如int、float、struct等。您可以使用NSNumber 对象来封装基本数值。
例如,将int类型数据封装成一个对象,然后将这个对象放入NSArray和NSDictionary中。
NSNumber *number=[NSNumber numberWithInt:42];
[数组addObject:number];
21. 将一个结构放入NSArray 中。
NSRect *rect=NSMakeRect(1, 2, 30, 40);
NSValue *value=[NSValue valueWithBytes:rect objCType:@encode(NSRect)];
[数组addObject:值];
可以使用getValue:方法来提取值:(调用getValue:时,需要传入变量的地址来存储值)
值=[数组objectAtIndex:0];
[值getValue:rect];
还有一个方便的方法:
值=[NSValue valueWithRect:rectt];
[数组addObject:值];
22. 代表主目录的简写符号:~的用法如下:
NSString *home=[@"~" stringByExpandingTildeInPath];
//stringByExpandingTildeInPath 方法将“~”替换为当前用户的主目录
23、内存管理规则:
1、当你使用new、alloc、copy方法创建一个对象时,该对象的保留计数器值为1。当该对象不再使用时,你负责向该对象发送release或autorelease消息。这样,该对象将在其生命周期结束时被销毁。
2. 当您通过其他方式获取对象时,假定该对象的保留计数器值为1,并且已设置为自动释放。您不需要执行任何操作来确保对象被清理。如果您计划拥有该对象一段时间,则需要保留它并确保在操作完成时释放它。
3. 如果保留一个对象,则需要(最终)释放或自动释放该对象。 keep方法和release方法的使用次数必须保持相等。
24、点表达式:如果等号左边出现点表达式,则会调用属性名的setter方法。如果出现在右侧,则将调用getter方法。例如:str.length=10; int 长度=str.length;
25、如果希望功能的名称与支持该功能的实例变量的名称不同,只需修改.h文件中实例变量的名称,在.m文件中写入@synthesize 。特征名称=修改后的实例变量名称。
例如在Car.h 文件中
NSString *application //定义实例变量
@property(nonatomic, 复制) NSString *name; //定义一个属性
如果希望application是支持属性名称的实例变量的名称,那么在Car.m文件中
@synthesize name=应用程序就足够了。
这样我们在访问实例变量的时候就使用了这个方法:self.name=@"Car";
26、当设置一个属性为只读属性时,编译器只会生成该属性的getter方法,而不会生成setter方法。
27. 向现有类添加新方法。这些方法称为类别。类别的声明方式与类相同。
28. 类别限制:
1.类别不能添加新的实现变量,因此类别的声明中没有实例变量部分。
2.名称冲突,即类别中的方法与现有方法同名。当发生名称冲突时,类别具有更高的优先级。你的类方法将完全取代initial方法,因此initial方法不能再使用。
29. 一个类的实现不仅可以分散到多个不同的源文件中,还可以分散到多个不同的框架中。
30.复制分为深复制和浅复制:
浅复制:不复制引用对象,新复制的对象仅指向已有的引用对象。 NSArray类的copy方法是浅拷贝。如果复制包含5 个NSString 类对象的NSArray 类对象,则最终会得到5 个可供程序使用的字符串对象,而不是10 个字符串对象。
深拷贝:所有引用的对象都将被复制。如果NSArray的复制方法是深复制,则复制操作完成后,您将获得10个可用的字符串对象。
下图是今年iOS开发的一些视频教程。因为会不定期更新,所以就不截图太多了。如果你对iOS开发有不懂的问题或者需要视频教程,可以查看我的简介。
【Unlocking Your Goals: A Comprehensive Guide】相关文章:
用户评论
这篇论文肯定探讨的是一个具体的项目目标吧?
有16位网友表示赞同!
想知道这篇文章会从哪个角度谈论 "目标"。
有8位网友表示赞同!
目标是实现成功的重要一部分,期待看到更多关于如何设定和实现目标的分享。
有17位网友表示赞同!
在生活中有很多事情需要明确的目标。希望这篇文章能给我一些启发。
有12位网友表示赞同!
设置清晰的目标能够帮助我们更好地规划未来,我很想了解这篇文章的详细内容。
有20位网友表示赞同!
成功的关键在于设定正确、可实现的目标!这篇文章似乎会提供一些有价值的见解。
有16位网友表示赞同!
目标是什么?它对个人的发展道路有什么影响?期待这篇文字能深入探讨这个问题。
有7位网友表示赞同!
这篇文章的研究重点是目标吗?很想知道它涉及到的具体领域和研究方法。
有13位网友表示赞同!
有时候迷失方向,不知道该往哪里努力。希望这篇文章能提供一些帮助。
有10位网友表示赞同!
我一直想学习如何设定好目标来实现自己的梦想,期待这篇文字能够给我启迪。
有14位网友表示赞同!
是否会探讨不同类型目标的设立方法?比如短期目标和长期目标?
有17位网友表示赞同!
希望看到作者分析不同情况下的目标制定策略和注意事项。
有14位网友表示赞同!
不同的行业、不同的个人可能对目标有不同的理解。这篇文章是否会对此进行比较分析呢?
有18位网友表示赞同!
目标是一个很重要的概念,它贯穿于生活的方方面面。期待这篇文字能引发更深层的思考。
有14位网友表示赞同!
这篇文章的篇幅如何?内容能否涵盖不同种类目标的意义和作用?
有17位网友表示赞同!
很多时候,我们只知道需要设定目标,却不知道如何去实现它们。希望这篇文章能提供一些实际方法。
有6位网友表示赞同!