摘要:
二口诀与范式1 口诀。1.1 谁创建,谁释放(类似于“谁污染,谁治理”)。如果你通过alloc、new或copy来创建一个对象,那么你必须调用release或autorelease。换句话说,不是你创建的,就不用你去释放。例如,你在一个函数中alloc生成了一个对象,且这个对象只在这个函数中被使用,那么你必须在这个函数中调用release或autorelease。如果你在一个class的某个方法中alloc一个成员对象,且没有调用autorelease,那么你需要在这个类的dealloc方法中调用release;如果调用了autorelease,那么在dealloc方法中什么都不需要做。1.2 阅读全文
摘要:
此文涉及的内存管理是针对于继承于NSObject的Class。一基本原理Objective-C的内存管理机制与.Net/Java那种全自动的垃圾回收机制是不同的,它本质上还是C语言中的手动管理方式,只不过稍微加了一些自动方法。1 Objective-C的对象生成于堆之上,生成之后,需要一个指针来指向它。ClassA *obj1 = [[ClassA alloc] init];2 Objective-C的对象在使用完成之后不会自动销毁,需要执行dealloc来释放空间(销毁),否则内存泄露。[obj1 dealloc]; 这带来了一个问题。下面代码中obj2是否需要调用dealloc?Class 阅读全文
摘要:
一、XCode、Objective-C、Cocoa说的是几样东西?答案:三样东西。XCode:你可以把它看成是一个开发环境,就好像Visual Studio或者Netbeans或者SharpDevelop一样的玩意。你可以将Interface Builder认为是Visual Studio中用来画界面的那部分功能单独提出来的程序。Objective-C:这是一种语言,就好像c++是一种语言,Java是一种语言,c#是一种语言,莺歌历史也是一种语言一样。Cocoa:是一大堆函数库,就好像MFC、.NET、Swing这类玩意,人家已经写好了一堆现成的东西,你只要知道怎么用就可以了。有些人会比较容易 阅读全文
摘要:
1.面象的读者在阅读本文之前,应具备使用与C类似的编程语言(如C,C++,JAVA)的一些经验,同时熟悉面向对象编程。 2.ObjC简介ObjC是以SmallTalk为基础,建立在C语言之上,是C语言的超集。20世纪80年代早期由 Brad J.Cox设计,2007年苹果公司发布了ObjC 2.0,并在iPhone上使用ObjC进行开发。3.ObjC学习内容学习的内容主要包括语法和Cocoa框架两部分。本文主要对语法进行介绍。4.IDE编写ObjC程序最主要的编译环境是Xcode,它是苹果官方提供的IDE,官网中的SDK包括Xcode,可以通过下载SDK来获得它。但是Xcode只支持MacOS 阅读全文
摘要:
Objective-C中有几种数据类型和C不太一样。特此记录。- id 是一个指针类型,可以指向任何类型的对象- BOOL和char是一样的,但是做为布尔值使用。YES 表示1NO 表示0- IBOutlet 是个没有任何意义的宏,可以忽略。当Interface Builder从.h文件中读取类定义时,这个宏会对其做出一个提示。- IBAction和void是一样的,同样仅用作对Interface Builder的提示。- nil和NULL是一样的,我们使用nil而不用NULL是因为我们用来表示对象的指针为空。另外#import和#include是一样的,但是#import可以确保引用的文件只 阅读全文