代码块(block)的使用

摘要: Objective-C语法之代码块(block)的使用代码块本质上是和其他变量类似。不同的是,代码块存储的数据是一个函数体。使用代码块是,你可以像调用其他标准函数一样,传入参数数,并得到返回值。脱字符(^)是块的语法标记。按照我们熟悉的参数语法规约所定义的返回值以及块的主体(也就是可以执行的代码)。下图是如何把块变量赋值给一个变量的语法讲解:按照调用函数的方式调用块对象变量就可以了:int result = myBlock(4); // result是 28Ios4已经直接支持blocks,很有必要学习一下。在ios,blocks是对象,它封装了一段代码,这段代码可以在任何时候执行。Block 阅读全文
posted @ 2013-11-24 23:24 IOS开发者 阅读(367) 评论(0) 推荐(1) 编辑

类扩展Extension

摘要: 延展(Extension):在本类里声明私有方法。1:延展定义的方法是在implemetation中。2:声明的方法是私有方法。3:延展中声明的方法可以不实现。#import"Host.h"//延展的声明@interfaceHost()-(BOOL)hasHouse;@end@implementationHost//其实就是我们常见的在累的实现部分的上边还有一个类的接口,这里就是延展,在这里声明的方法,可以不去实现,而且是私有方法 阅读全文
posted @ 2013-11-24 23:04 IOS开发者 阅读(426) 评论(0) 推荐(0) 编辑

协议与非正式协议

摘要: //协议#import //定义一个协议类@protocol mDelegate @required- (void)thisIsADelegateMethodYouMustAchive;@optional- (void)thisIsADelegateMethodYouCanNotAchive;@end@interface Delegate : NSObject@property (nonatomic, retain) iddelegate;- (void)thisIsAMethodToShowHowToUseDelegate;@end#import "Delegate.h" 阅读全文
posted @ 2013-11-24 22:51 IOS开发者 阅读(1144) 评论(0) 推荐(0) 编辑

分类

摘要: //原始类#import @interface Category : NSObject@property (nonatomic ,retain) NSString *test;- (void)thisIsANowClassMethod;@end#import "Category.h"@implementation Category- (void)thisIsANowClassMethod{ NSLog(@"This is a now Class method");}@end//分类的接口部分#import "Category.h"@i 阅读全文
posted @ 2013-11-24 22:03 IOS开发者 阅读(200) 评论(0) 推荐(0) 编辑

括号匹配性检测C语言实现

摘要: #include #define SIMPLE_KUOHAO "(()1231qeqw)(@#$)"#define COMPLEX_KUOHAO "{(()[asd])}{{{{(((())))}}}}"int main(int argc, const char * argv[]){ /*问题描述: 假设一个算术表达式中可以包含三种括号:圆括号"(" 和 ")",方括号"["和"]"和花括号"{"和"}",且这三种括号可按任意的 次序嵌 阅读全文
posted @ 2013-11-24 18:52 IOS开发者 阅读(2752) 评论(0) 推荐(0) 编辑

预处理命令--宏定义

摘要: /*预处理命令--宏定义*/ //宏名一般习惯用大写字母表示 //使用宏可以减少再程序中重复书写某些繁琐字符的工作量,避免不必要的错误 //宏定义只是简单地替换,不做正确性检查 //宏定义末尾不必加分号 //宏定义的有效范围是,宏定义之后到本源文件结束 //宏定义可以引用已经定义的宏,层层替换 //程序中在""中的字符即使与宏名相同也不进行替换 //宏定义只做字符替换,不分配内存 //宏替换不占用运行时间,只占用编译时间 /*宏定义的一般格式*/ //#define 宏名 需要替换地字符串 /*带参地宏定义*/ //#define 宏名(参数表) 需要替换地字符 ... 阅读全文
posted @ 2013-11-23 23:45 IOS开发者 阅读(808) 评论(0) 推荐(0) 编辑

*运算和&运算

摘要: /* &:取地址运算符 *:指针运算符(或称为间接运算符),取指针所指向的对象的内容 */ int a,b; int *pointer_1, *pointer_2; pointer_1 = &a;//把变量a的地址赋给pointer_1,切记不要将一个整数赋值给指针变量 &*pointer_1;//&和*的优先级相同,但按自右而左的方向结合,次句先执行(*pointer_1)而* pointer_1就是变量a,再执行&运算,故&*pointer_1 和 &a等价,即取变量a的地址 *&a;//先进行&运算得a的地址,再进行 阅读全文
posted @ 2013-11-23 22:22 IOS开发者 阅读(386) 评论(0) 推荐(0) 编辑

retain, copy, assign以及autorelease

摘要: 一,retain, copy, assign区别1. 假设你用malloc分配了一块内存,并且把它的地址赋值给了指针a,后来你希望指针b也共享这块内存,于是你又把a赋值给(assign)了b。此时a 和b指向同一块内存,请问当a不再需要这块内存,能否直接释放它?答案是否定的,因为a并不知道b是否还在使用这块内存,如果a释放了,那么b在使用这块内存的时候会引起程序crash掉。2. 了解到1中assign的问题,那么如何解决?最简单的一个方法就是使用引用计数(reference counting),还是上面的那个例子,我们给那块内存设一个引用计数,当内存被分配并且赋值给a时,引用计数是1。当把a 阅读全文
posted @ 2013-11-23 21:04 IOS开发者 阅读(191) 评论(0) 推荐(0) 编辑

自定义 一个单例

摘要: 单例是一种重要的概念,它是一种极其便利的设计模式#import @interface DanLi : NSObject{ NSString *someProperty;}@property (nonatomic,retain) NSString *someProperty;+ (id)sharedDanli;@end#import "DanLi.h"@implementation DanLi@synthesize someProperty;+ (id)sharedDanli{ static DanLi *myDanli = nil; /*通过GCD的dispath_once 阅读全文
posted @ 2013-11-23 20:37 IOS开发者 阅读(253) 评论(0) 推荐(0) 编辑

多米音乐笔试题

摘要: 第一题:staticint a = 1;void test(){ static int a = 2; printf("%d",a);}答案:a的值为2说明:1、static关键字在局部变量名字的前面加上static,可以使局部变量保留多次调用一个方法所得的值,只在程序开始执行时初始化一次,且静态变量的初始值为0,静态局部变量属于静态存储类型,在静态存储区内分配内存,在程序运行期间不释放内存,静态的全局变量的作用域是本文件;在定义函数时在函数返回类型前面加上static,该函数则为内部函数(静态函数),其作用域仅限于本文件。要定义外部函数则在函数前家上exter关键字(省略关 阅读全文
posted @ 2013-11-23 20:01 IOS开发者 阅读(392) 评论(0) 推荐(0) 编辑