文章分类 - objc
摘要:先看一下官方文档给出的初始化示例代码:[plain] view plaincopy-(id)init{self=[superinit];//Calladesignatedinitializerhere.if(self!=nil){//省略其他细节}returnself;}容易让人困惑的地方在于,将父类初始化之后,将其返回的对象指针覆盖当前对象的指针。这种方式令人费解,目前暂时找不到官方解释这么做的原因。官方文档有解释。我们先分以下几种情况分别分析:(假设superSelf是[super init]的返回值)1 superSelf == nil 此时父类初始化失败,self随之被赋值为nil并.
阅读全文
摘要:1.基本概念MODEL主要是英文文档里面经常出现的一些概念,讲解一下,方便英文文档的阅读。IOS应用开发是遵循MVC设计模式的,Cocoa框架用Object Modeling的规则来规范一个Model的实现。ObjectModeling有如下几个概念的规定:Entity:表示持有数据的一个实体Property实体中的成员,分为Attribute和:RelationshipAttribute:基本类型的成员,比如:数字、NSString。Relationship:指向其它Entity的关系型成员,它又有to 1Relationship和to manyRelationship的区别。Accesso
阅读全文
摘要:The way how methods are called in Objective-C is different to Java. If you are doing your first steps with Objective-C, it seems that sending messages to an object in Objective-C is exactly the same as calling methods in Java. A different syntactic way.But sending messages and calling methods are tw
阅读全文
摘要:苹果的Objective-C编译器允许用户在同一个源文件里自由地混合使用C++和Objective-C,混编后的语言叫Objective-C++。有了它,你就可以在Objective-C应用程序中使用已有的C++类库。 Objective-C和C++混编的要点在 Objective-C++中,可以用C++代码调用方法也可以从Objective-C调用方法。在这两种语言里对象都是指针,可以在任何地方使用。例 如,C++类可以使用Objective-C对象的指针作为数据成员,Objective-C类也可以有C++对象指针做实例变量。下例说明了这一点。注意:Xcode需要源文件以".mm&
阅读全文
摘要:So why assign the value returned from [super init] to self? Looking at a typical initializer method:-(id)initWithString:(NSString*)aString { self =[super init]; if(self) { instanceString =[aString retain]; } return self;}Why do we assign [super init] to self here?The textbook reason is becau...
阅读全文
摘要:深入浅出ObjC之消息 罗朝辉(http://blog.csdn.net/kesalin)转载请注明出处在入门级别的ObjC 教程中,我们常对从C++或Java 或其他面向对象语言转过来的程序员说,ObjC 中的方法调用(ObjC中的术语为消息)跟其他语言中的方法调用差不多,只是形式有些不同而已。譬如C++ 中的:Bird * aBird = new Bird();aBird->fly();在ObjC 中则如下:Bird * aBird = [[Bird alloc] init];[aBird fly];初看起来,好像只是书写形式不同而已,实则差异大矣。C++中的方法调用可能是动态的,也
阅读全文
摘要:苹果的Objective-C编译器允许用户在同一个源文件里自由地混合使用C++和Objective-C,混编后的语言叫Objective-C++。有了它,你就可以在Objective-C应用程序中使用已有的C++类库。Objective-C和C++混编的要点在Objective-C++中,可以用C++代码调用方法也可以从Objective-C调用方法。在这两种语言里对象都是指针,可以在任何地方使用。例如,C++类可以使用Objective-C对象的指针作为数据成员,Objective-C类也可以有C++对象指针做实例变量。下例说明了这一点。 注意:Xcode需要源文件以".mm&qu
阅读全文
摘要:这是GCC编译器的一个Bug,与Xcode4.2或者3.2无关。在Xcode的任何版本都会报这个错误。你有一个类A:#import <Foundation/Foundation.h>#import "B.h"@interface A : NSObject@end#import "A.h"@implementation A@end还有一个类B:#import <Foundation/Foundation.h>#import "A.h"@interface B : NSObject@end#import "
阅读全文
摘要:在我的理解来说: 对象(object)即一块内存,本文要探讨的是一个Objective-C对象在内存的布局(layout)问题,水果的官方文档有说,一个类 (class)如果不需要从NSObject继承其某些特定的行为是不用继承NSObject的,这里我将讨论限制在继承了NSObject的类的对象范 围内。首先来看一下,NSObject的定义:1 @interface NSObject <NSObject> {2 Class isa;3 } (由于我们讨论的是内存布局,因此将其方法的定义撇开) 在Objective-C中,@interface关键字可以看着是C语言 中的stru..
阅读全文
摘要:http://www.evernote.com/shard/s20/sh/31282c0d-f702-4900-9842-cffd64cdc45a/fbf2f02e8cd81c5f9445f825ca1531d3kvc 就是一种通过字符串去间接操作对象属性的机制, 访问一个对象属性我们可以 person.age 也可以通过kvc的方式 [person valueForKey:@"age"]keypath 就是属性链式访问 如 person.address.street 有点象java里面的pojo ognl表达式之类的假如给出的字符串没有对象的属性 会访问valueForU
阅读全文
摘要:避免动态绑定的唯一办法就是取得方法的地址,并且直接象函数调用一样调用它。当一个方法会被连续调用很多次,而且您希望节省每次调用方法都要发送消息的开销时,使用方法地址来调用方法就显得很有效。利用NSObject类中的methodForSelector:方法,您可以获得一个指向方法实现的指针,并可以使用该指针直接调用方法实现。methodForSelector:返回的指针和赋值的变量类型必须完全一致,包括方法的参数类型和返回值类型都在类型识别的考虑范围中。下面的例子展示了怎么使用指针来调用setFilled:的方法实现:void (*setter)(id, SEL, BOOL);int i;sett
阅读全文
摘要:Xcode调试 之 内存泄露开始之前:假如使用ARC的,就直接忽视此文。 这两天项目的性能问题摆上台面,由于长期未进行内存排查,现在的iPad版本已经有点过分慢了。遂,连续查了好几天内存。今天得闲,结合自己的使用,写一下如何检查内存泄露。我所碰到的主要内存泄露的方式:1、最常见的就是,申请了引用,然后最后忘记释放。具体么就是,使用OC的 alloc, retain, copy, new, C的malloc, realloc, C++ 的new等,然后没有对应的release, free, delete。这是单向泄露。2、retain cycle,对于OC这种使用计数的方式,可能会存在retai
阅读全文
摘要:几乎所有出现在iPhone屏幕上的内容都是视图。视图的作用类似于一块画布,可以在上面绘制各种颜色、图片和按钮。可以在屏幕中拖动它们,也可以重新调整他们的大小,还可以对它们进行分层。一个窗口可以有多个视图,这是iphone界面的核心规则。view是GUI构建块,它们提供在屏幕上显示的可视元素,并和用户发起交互。每个 iPhone用户界面都是通过一个UIWindow中显示的UIView构建的。UIWindow就是一个特殊的UIView。窗口是所有view的容 器,他显示层次的根。1. 层次结构。iphone应用程序,所有视图都是基于树的层次结构排序的。每个视图都可以有0到无穷个子视图。应用程序将会
阅读全文
摘要:@代表“Objective-C”的标志,证明您正在使用Objective-C语言Objective-C语言关键词,@property与@synthesize配对使用。功能:让编译好器自动编写一个与数据成员同名的方法声明来省去读写方法的声明。如:1、在头文件中:C代码 @propertyintcount;等效于在头文件中声明2个方法:C代码 -(int)count;-(void)setCount:(int)newCount;2、实现文件(.m)中C代码 @synthesizecount;等效于在实现文件(.m)中实现2个方法。C代码 -(int)count{returncount;}-(void
阅读全文
摘要:iOS Questions for Beginers* Q: How would you create your own custom view?A:By Subclassing the UIView class.* Q: Whats fast enumeration?A:Fast enumeration is a language feature that allows you to enumerate over the contents of a collection. (Your code will also run faster because the internal impleme
阅读全文

浙公网安备 33010602011771号