码迷,mamicode.com
首页 >  
搜索关键字:effective objective c    ( 6648个结果
【《Objective-C基础教程 》笔记ch05】(六)OC中的复合机制Composition
1、复合通过包括作为实例变量的的对象指针实现的。 @interface Unicycle : NSObject { Pedal*pedal; Tire*tire; }//Pedal和tire通过复合的方式组成了Unicycle2、存取方法——用来读取或者改变某个对象属性...
分类:其他好文   时间:2014-07-14 09:53:34    阅读次数:162
Effective C++ Item 38 通过复合塑模出 has-a 或 is-implemented-in-terms-of
经验:在应用域,复合意味着 has-a。 在实现域,复合意味着 is-implemented-in-terms-of 示例: template //将list应用于 Set。错误做法 class Set: public std::list {...}; 解析: public 继承表示 is-a,即如果D是一种B,对B为真的每一件事,对D也应该为真。但list可以包含相同的元素,而Set不可以 纠正: template class Set{ publi...
分类:编程语言   时间:2014-07-12 23:02:43    阅读次数:369
Effective C++ Item 37 绝不重新定义继承而来的缺省参数值
经验:绝对不要重新而来的缺省参数值,因为缺省参数值都是静态绑定,而 virtual 函数 -- 你唯一应该覆写的东西 -- 却是动态绑定 示例: class Shape{ public: enum ShapeColor {Red, Green, Blue}; virtual void draw(ShapeColor color = Red) const = 0; }; class Rectangle: public Shape{ public: virtual void draw(ShapeColor...
分类:编程语言   时间:2014-07-12 21:22:15    阅读次数:278
Effective C++ Item 36 绝不重新定义继承而来的 non-virtual 函数
经验:绝对不要重新定义继承而来的 non-virtual 函数 --> Item 7 "为多态基类声明 virtual 析构函数" 是本条款的特例 示例: class B{ public: void mf(); //... }; class D: public B{ public: void mf(); // 遮掩了B::mf,Item 33 名称遮掩规则 } D x; B *pB = &x; D *pD = &x; pB->mf(); // 调用 B::mf pD->mf(); // 调用 ...
分类:编程语言   时间:2014-07-12 19:09:10    阅读次数:234
Objective-C中的Category(分类)
Objective-C中的Category(分类) 1 Category概念:动态的为已经存在的类添加新的行为(方法) 2 Category(分类)创建的方法 (1)通过Xcode生成分类 (2)可以手动生成分类,在头文件里面生成2个@interface 例如: 在Student.h文件中 @interface Student:NSObject -(void...
分类:其他好文   时间:2014-07-11 00:56:24    阅读次数:200
Effective C++ Item 27 少做转型操作
旧式转型 (T) expression 或 T (expression) 新式转型 const_cast(expression) 通常被用来将对象的常量性转除(cast away the constness) dynamic_cast(expression) 执行“安全向下转型”,也就是用来决定某对象是否归属继承体系中的某个类型。 reinterpret_cast(expression) 执行低级转型 //不太懂?? static_cast(expression) 强迫隐式转换 ...
分类:编程语言   时间:2014-07-10 23:19:18    阅读次数:250
Effective C++ Item 28 避免返回对象内部数据的引用或指针
经验:避免返回handles(包括 references、指针、迭代器)指向对象内部。遵守这个条款可增加封装性, 帮助 const 成员函数的行为像个 const,并将发生“虚吊号码牌”(dangling handles)的可能性降至最低。 示例: class Point{ public: Point(int x, int y); //... void setX(int newVal); void setY(int newVal); //... }; struct RectData{ Point...
分类:编程语言   时间:2014-07-10 22:56:05    阅读次数:230
Objective-C中的Protocol
Objective-C中的Protocol Protocol   简单来说就是一系列方法的列表,其中声明的方法可以被任何类实现,这种模式一般称为(delegation)模式 在iOS中和OS X中,Apple采用了大量的代理模式来实现MVC中的View(UI控件)和Controller(控制器) 下面举个例子 声明一个Button类和Buttonlisterner类...
分类:其他好文   时间:2014-07-10 21:23:44    阅读次数:192
Effective C++ Item 25 考虑写出一个不抛异常的swap函数
经验:当std::swap对你的类型效率不高时,提供一个swap成员函数,并确定这个函数不抛出异常 示例: stl里的swap算法 namespace std{ template void swap(T &a, T &b){ T temp(a); a = b; b = temp; } } //“pimpl手法”(pointer to implementation) --> 文件间的编译依存度 class WidgetImpl{ public: //... pr...
分类:编程语言   时间:2014-07-10 19:35:50    阅读次数:240
Effective C++ Item 26 尽可能延后变量定义式的出现时间
经验:尽可能延后变量定义式的出现。这样做可增加程序的清晰度并改善程序效率。 示例: //这个函数过早定义变量“encrypted” std::string encryptPassword(const std::string &password){ using namespace std; string encrypted; if(password.length() < MinimumPasswordLength){ throw logic_error("Password is too short"...
分类:编程语言   时间:2014-07-10 19:27:30    阅读次数:253
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!