`

obj-c学习笔记

 
阅读更多

内存管理:

    1、一个对象的所有者可能不止一个。

    2、你拥有通过alloc、new或copy(通过名字以“alloc”或“new”开头或名字中包含“copy”的方法)的对象的所有权。

    3、如果向一个对象发送了一条retain消息,则获得该对象的所有权。

    4、需要向使用release或autorelease释放对象的所有权。

 

共享对象的有效性:

    cocoa的所有权策略规定,被接受的对象通常在整个调用方法的作用域内保持有效。但有如下例外

    1、若对象属于某集合,但该对象在集合中被删除。

 

obj = [array objectAtIndex:n];
[array removeObjectAtIndex:n];
// 此时obj是无效的

     当对象从一个基本的集合中删除时,会向该对象发送一条release消息。如果集合是该对象的唯一所有者,则释放该对象。

    2、当“父对象”被收回的时候

 

obj = [parent child];
[parent release];
// 此时obj是无效的

     通常情况下,类内的属性都会在该类的dealloc方法中release掉,所以如果parent是obj的唯一所有者,parent在release的时候会释放掉obj的内存空间。

    解决方法,在获取对象的时候调用retain方法即可:

 

obj = [[array objectAtIndex:n] retain];

 

Web视图:

    1、如果需要结合客户端与webview进行开发,需要在html中加入以下meta,告诉safari整个页面的宽度(单位:像素) 

 

<meta name="viewport" content="width=320"/>
 

其他:

1、把精力放在用户能够看得见的地方

 

2、多使用property,少声明成员变量

 

3、使用()作为Category,而不是(Private)的Category

 

4、dealloc写在@synthesize后面,可以较明显的一一对应

 

5、

错误:

[foo release];
foo = [newVal retain];

 

正确:

if (foo != newVal) {
	[foo release];
	foo = [newVal retain];
}
 

简洁:

[foo autorelease];
foo = [newVal retain];

6、不要在viewDidLoad中初始化数据。viewDidLoad可能会被调用多次,而viewDidUnload可能不会被调用一次

 

7、NSNotificationCenter中注册多个通知后,要逐一remove掉,如果直接使用[[NSNotificationCenter defaultCenter] removeObserver:self]remove的话,可能会remove掉父类注册的通知,就算父类是UIViewController,也会remove掉父类的Memory Warning通知。

 

 

 

 

PS:学习笔记,遇到值得记录的东西,记录之

分享到:
评论

相关推荐

    iphone OBJ-C入门笔记

    学习 Objective-C,不仅要掌握语法,还要理解其运行时系统和苹果提供的框架,如 Foundation 框架,这些都对于开发 iOS 和 macOS 应用至关重要。在实践中,不断编写代码和调试将是深化理解的最佳途径。

    Object-C 学习笔记

    **Object-C 学习笔记** Objective-C(简称Obj-C或Objective C)是苹果公司基于C语言开发的一种面向对象编程语言,主要用于iOS和macOS平台的应用程序开发。它在C语言的基础上添加了Smalltalk风格的消息传递机制,...

    全套C语言学习笔记 -- 大Z的C语言授课笔记

    【C语言学习笔记】 C语言是一种强大的编程语言,它的学习笔记涵盖了从基础知识到高级特性的全方位内容。在学习C语言时,首先需要了解文件类型,如C语言的源文件通常以`.c`为扩展名,而C++源文件是`.cpp`。头文件`.h...

    ios学习笔记---simpleping

    这个"ios学习笔记---simpleping"旨在帮助初学者理解如何在iOS应用中实现简单的网络探测功能。 SimplePing是一个基于Objective-C的类,它提供了对ICMP(Internet Control Message Protocol)协议的支持,这个协议被...

    Object-C语言教程0220.zip

    Objective-C(简称Obj-C或Objective-C)是苹果公司基于C语言构建的一种面向对象的编程语言,广泛应用于iOS和Mac OS X操作系统。本教程将深入探讨Object-C的基础概念、语法特性以及实际开发中的应用,旨在帮助初学者...

    C语言学习笔记——小浪神

    C语言学习笔记——小浪神 本笔记是关于C语言的学习笔记,涵盖了C语言的基本概念、历史发展、语言特点、数据类型、变量、常量、算法等方面的知识点。 计算机程序的概念 计算机程序是指一组能够被计算机识别和执行...

    《C语言学习笔记》初识C语言1

    《C语言学习笔记》初识C语言1 C语言是一种广泛应用的高级编程语言,它以其简洁、高效的特点深受程序员喜爱。本章节将介绍C语言的基本概念以及如何开始编写C语言程序。 1. 基本概念 - **程序**:程序是由一系列...

    机器人 仿真 V-REP 入门笔记-上

    ### 机器人仿真 V-REP 入门笔记-上 #### V-REP简介 V-REP (Virtual Robot Experimentation Platform),即虚拟机器人实验平台,是一款强大的机器人模拟器与集成开发环境。它采用分布式控制架构,允许每个对象或模型...

    嵌入式学习笔记1.1.pdf

    嵌入式学习是针对嵌入式系统的专业学习领域,涉及硬件和软件...以上内容是对“嵌入式学习笔记1.1.pdf”文件中提取的知识点的详细说明,涉及了嵌入式系统开发的多个方面,为学习和掌握嵌入式系统开发提供了丰富的资料。

    keyshot渲染学习笔记

    KeyShot不需要依赖其他三维建模软件,它可以独立运行,支持多种3D文件格式,包括但不限于PTC Creo、SketchUp、SolidWorks、RHINO、Pro/E、IGES、C4d、OBJ、3ds、Collada和FBX等。这意味着用户可以在不同的三维建模...

    MAKE 学习 笔记make

    ### MAKE 学习笔记知识点详解 #### 一、Make 的基本概念 - **Make 的作用**:`Make` 是一种自动化构建工具,主要用于管理程序的编译过程,它通过读取一个名为 `Makefile` 或 `makefile` 的文件来决定如何编译和...

    C语言详细笔记——学习C语言从此变得简单

    - **源文件**: 源文件是编写C语言程序的基础,扩展名为`.c`。例如,`example.c`。 - **头文件**: 头文件通常包含函数声明、宏定义等,用于被多个源文件共享。扩展名为`.h`,如`example.h`。 - **库文件**: 库文件...

    C笔记详细整理

    - **源文件**:C语言的源文件扩展名为`.c`,而C++的源文件扩展名为`.cpp`。 - **头文件**:扩展名为`.h`,通常包含函数声明、宏定义等。 - **库文件**:动态链接库文件扩展名为`.dll`,主要用于存储可被多个程序共享...

    高质量c++编程指南学习笔记

    ### 高质量C++编程指南知识点总结 #### 1. 布尔变量的比较 在C++中,不应该直接将布尔变量与`TRUE`, `FALSE`或`1`, `0`进行比较。...以上总结了《高质量C++编程指南》中提到的关键知识点,希望对您的学习有所帮助。

    java与c++交互(JNI学习笔记)

    ### Java与C++交互(JNI学习笔记) #### 一、Java类型与C/C++类型对应关系 在Java Native Interface (JNI) 中,Java 和 C/C++ 的数据类型有着明确的对应关系。理解这些对应关系是实现Java与C++交互的基础。 - **...

Global site tag (gtag.js) - Google Analytics