object C基础
星期三, 2013-01-16 | Author: liweizhou40 | ios | 没有评论 3,261 views
这篇主要记录学习apple developer上的Programming with Objective-C的体会
1、类
类是创建对象的模板,接口是类对外的展示
(1)接口定义
1 2 3 4 5 6 7 | @interface Person : NSObject @property (readonly) NSString *firstName; @property (readonly) NSString *lastName; @property int yearOfBirth; - (void)sayHello; - (void)saySomething:(NSString *)someWords; @end |
需要注意,名称必须唯一,所以一般会添加前缀,防止命名冲突(比如ZLWPerson)。
在方法前加-,代表这是一个实例方法。类方法前加+。
(2)类定义
1 2 3 4 5 6 7 8 9 10 | #import "XYZPerson.h" @implementation XYZPerson - (void)sayHello { [self saySomething:@"Hello, world!"]; } - (void)saySomething:(NSString *)someWords{ NSLog(@"%@", someWords); } @end |
如果要调用父类的方法[super saySomething:someWords];
(3)对象
方法调用
1 | [zhoulw saySomething:@"shut up!"]; |
初始化(可带参数)
1 | SomeObject *newObject = [[SomeObject alloc] initWithInt:30]; |
利用new初始化(不带参数,只是简化写法)
1 | SomeObject *newObject = [SomeObject new]; |
利用工厂方法(实际上还是调用了初始化)
1 | NSNumber *magicNumber = [NSNumber numberWithInt:42]; |
利用字面量
1 | NSString *name = @"zlw"; |
nil:不同于java的null,不会抛异常
1 2 3 | if (somePerson) { // somePerson points to an object } |
实例变量
1 2 3 4 5 6 | @synthesize firstName = ivar_firstName; ... NSString* firstName = [personZlw firstName]; firstName = personZlw.firstName; firstName = ivar_firstName; [personZlw setFirstName:@"zhoulw"]; |
没有使用@synthesize,则实例变量名为_firstName;
@synthesize firstName,则实例变量名就是firstName;
可以不写property,定义实例变量,不过不建议使用;
在init方法中,直接使用实例变量赋值,而不用set方法(why?没有实例?);
get,set方法是原子操作
强引用,弱引用
1 2 | @property (weak) id delegate; NSObject * __weak weakVariable; |
有些类不可以被弱引用,如NSTextView, NSFont and NSColorSpace
1 2 | @property (unsafe_unretained) NSObject *unsafeProperty; NSObject * __unsafe_unretained unsafeReference; |
copy修饰
1 2 3 4 5 6 | NSMutableString *nameString = [NSMutableString stringWithString:@"John"]; self.badgeView.firstName = nameString; [nameString appendString:@"ny"]; ... //直接赋值时别忘记copy _instanceVariableForCopyProperty = [aString copy]; |
4、protocol
略,原来写了,忘记保存,懒得补
5、block
1 2 3 4 5 | void (^simpleBlock)(void) = ^{ NSLog(@"This is a block"); }; ... simpleBlock(); |
1 2 3 4 5 6 | double (^multiplyTwoValues)(double, double) = ^(double firstValue, double secondValue) { return firstValue * secondValue; }; double result = multiplyTwoValues(2,4); NSLog(@"The result is %f", result); |
1 2 3 4 5 6 | int anInteger = 42; void (^testBlock)(void) = ^{ NSLog(@"Integer is: %i", anInteger); }; anInteger = 84; testBlock(); //42 |
__block block可以知道变量修改,并且block可以改变变量值
1 2 3 4 5 6 7 8 | __block int anInteger = 42; void (^testBlock)(void) = ^{ NSLog(@"Integer is: %i", anInteger); anInteger = 100; }; anInteger = 48; testBlock();//48 NSLog(@"Value of original variable is now: %i", anInteger);//100 |
1 2 3 4 5 6 7 8 | typedef void (^XYZSimpleBlock)(void); XYZSimpleBlock anotherBlock = ^{ ... }; - (void)beginFetchWithCallbackBlock:(XYZSimpleBlock)callbackBlock { ... callbackBlock(); } |
右键新建文本文档丢失解决
星期一, 2012-12-31 | Author: Lee | computer | 没有评论 4,630 views
今天发现右键中没有了新建文本文档,对于我这个喜欢用记事本保存点东西的人真是头疼,解决之法:
一:用命令行 cmd里面输入 NOTEPAD (麻烦吗?)
二:恢复右键中的这个选项
新建个文本 (保存为note.reg) 后双节导入即可 (或者 regedit 后 文件–>导入 重启后就可以了)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\.txt] @="txtfile" "PerceivedType"="text" "Content Type"="text/plain" [HKEY_CLASSES_ROOT\.txt\ShellNew] "NullFile"="" [HKEY_CLASSES_ROOT\txtfile] @="文本文档" [HKEY_CLASSES_ROOT\txtfile\shell] [HKEY_CLASSES_ROOT\txtfile\shell\open] [HKEY_CLASSES_ROOT\txtfile\shell\open\command] @="NOTEPAD.EXE %1 |
mysql备份导入导出说明和对应的shell脚本
星期六, 2012-12-22 | Author: Lee | Database | 没有评论 4,937 views
1.导出整个数据库(–hex-blob 为有blob数据做的,防止乱码和导入失败用)
mysqldump -u 用户名 -p 数据库名 > 导出的文件名
1 | mysqldump -u root -p --default-character-set=gbk --hex-blob i5a6 > i5a6.sql |
2.导出一个表
mysqldump -u 用户名 -p 数据库名 表名> 导出的文件名
1 | mysqldump -u root -p i5a6 users> i5a6.sql |
3.导出一个数据库结构
1 | mysqldump -u root -p -d --add-drop-table i5a6 >d:/i5a6.sql |
-d 没有数据 –add-drop-table 在每个create语句之前增加一个drop table
4.导入数据库
常用source 命令
进入mysql数据库控制台,
如mysql -u root -p
mysql>use 数据库
然后使用source命令,后面参数为脚本文件(如这里用到的.sql)
1 | mysql>source d:/i5a6.sql |
MySQL Installer 5.5.29在win7下安装失败解决
星期六, 2012-12-22 | Author: Lee | Database | 没有评论 5,352 views
今天下载了最新版的mysql,安装的时候遭遇 Last error: unable to configure service,在最后配置的时候出错.
几次三番都是一样,端口3306肯定是没有占用,系统也从来没有装过mysql,很是诡异.
最终的解决之法居然是换个安装目录,本人前次是安装在 D:/soft/db换成D:/db下居然好了,难道和/s有关???
如下步骤成功安装。
1.首先卸载没有成功安装的MYSQL的一系列东东
2.清理下注册表,cmd下运行 regedit 后-F3-搜索你的安装路径,我的是:D:/soft/db.删除所有能找到的键或者键值.(蛮多的)
3.使用netstat -na 确保3306端口未被占用,换个端口应该也行,我的3306没有用
4.更换安装目录为D:/db
职业那点事从30岁到35岁:为你的生命多积累一些厚度
星期四, 2012-12-20 | Author: Lee | 体味生活 | 没有评论 3,519 views
常常思考一个问题:是不是考虑做2年开发,打2年酱油,然后结婚生子,这样到底行不行?无论你是男是女,人生是一场独自修行的道路。如果在可以选的时候,还是选择靠自己吧。(文章很长慢慢看了.)
无论你是要养家还是要实现人生价值,如果你处在迷茫之中,希望这篇文章可以传达一些正能量,可以帮到你。
–当然这篇文章是转的呀,但真的很有理啊,假如看了这篇文章,会影响到你的一生,那么我就觉得今天这一小时的时间花在这里值了。
你所有不曾料想过的问题,都会随着时间的推移而与你不期而遇;你所有曾经潇洒的随遇而安,同样也会随时间流逝而让你承担那些似乎命中已经注定的代价。在这个世界上,“唯一不可阻挡的是时间,它像一把利刃,无声地切开了坚硬和柔软的一切,恒定地向前推进着,没有任何东西能够使它的行进产生丝毫颠簸,它却改变着一切。”我始终相信一句话:出来混,迟早要还的。虽然你我皆是凡人,只是这芸芸众生中的普通一员,但我依然希望每个人的生命都能够迎着太阳开花结果。不管以你现在的阅历是否能够理解这段话的涵义,请先记下来。我相信总有一天,你会明白。因为,时间能解释一切,时间能证明一切,时间能解决一切。——题记
› 继续阅读
samba找不到网络路径和无法访问的解决办法
星期六, 2012-12-15 | Author: Lee | linux | 3 Comments 9,590 views
在前面一篇文章介绍了怎么搭建samba共享文件夹
具体见:linux共享文件夹给windows之samba搭建 //www.pomelolee.com/1072.html
比较郁闷的是,看到了文件夹,可是点击的时候出现了 找不到网络路径.
解决方法:
1.所设共享目录权限问题. (基本上不是这个问题)
1 | chmod 777 /data/samba/username |
2.linux防火墙的问题.(主要原因,如果有selinux 这个可以降低或者关闭)
1 | rpm -qa | grep selinux |
>>>>>.防火墙的关闭方法;
运行:setup 命令 使用 tab和 space选择即可
› 继续阅读
linux共享文件夹给windows之samba搭建
星期六, 2012-12-15 | Author: Lee | linux | 2 Comments 5,894 views
本文的环境是centos系统,为指定用户的共享,工作开发使用等
1.安装samba
1 | yum install samba smbfs |
2.添加要使用的帐号
1 2 | useradd -s /sbin/nologin username smbpasswd -a username |
3.创建目录
1 2 3 | mkdir -p /data/samba/username # 修改权限为777,权限交给samba管理 chmod 777 /data/samba/username |
通过dns解析获取域名的ip地址
星期二, 2012-12-04 | Author: Lee | JAVA-and-J2EE | 没有评论 9,163 views
可以通过域名获取域名解析的ip地址,java版本,通过java的本地dns解析,如果本地设置了host的解析地址将会和真实ip地址有出入:
获取www.qq.com的ip地址如下:
ipv4:222.73.78.166
ipv4:222.73.78.171
ipv4:222.73.78.181
ipv4:101.226.42.62
ipv4:101.226.49.101
ipv4:115.236.139.153
ipv4:180.153.210.43
code如下:
› 继续阅读
webgame遭遇double free or corruption (!prev):
星期二, 2012-12-04 | Author: Lee | linux, webgame, 游戏开发 | 没有评论 5,404 views
游戏在内测的时候遭遇到double free or corruption (!prev):
单从上面的理解很简单就是说 有地方调了2次 free();的内存释放函数.
查了下,这种低级错误的可能性不大,但是游戏的环境是在 一个多线程的代码,在主线程中申请了一块内存,在另一个线程中释放内存,估计是这个原因.
*** glibc detected *** /home/sara/webgame/t1: double free or corruption (!prev): 0x090634c8 ***
======= Backtrace: =========
/lib/libc.so.6[0x7c7261]
/home/sara/webgame/t1[0x804891e]
/home/sara/webgame/t1[0x9804fb0]
/lib/libpthread.so.0[0x8dcab5]
/lib/libc.so.6(clone+0x5e)[0x83383e]
00759000-008c7000 r-xp 00000000 fd:00 158979 /lib/libc-2.11.so
008c7000-008c8000 —p 0016e000 fd:00 158979 /lib/libc-2.11.so
008c8000-008ca000 r–p 0016e000 fd:00 158979 /lib/libc-2.11.so
008ca000-008cb000 rw-p 00170000 fd:00 158979 /lib/libc-2.11.so
进过排查和结合网上的遇到的说明修正如下函数:(另:可以在你做free()的统一函数地方做赋值指针为null做检测)
› 继续阅读
遭遇要执行请求的操作,wordpress需要访问您网页服务器的权限
星期三, 2012-11-28 | Author: Lee | php, wordpress | 一条评论 10,414 views
最近折腾了下wordpress,记录碰到的各种问题的解决之法:
换了独立的vps机器后,在后台自动升级的时候遭遇 到要执行请求的操作,wordpress需要访问您网页服务器的权限 到这个;
这个界面只会出现在PHP进程不是以用户身份来运行的主机上,也就是你的服务器运行PHP的用户和WP文件夹的所有者不一样,
目的就是为了安全,wordpress在升级时会创建一个临时文件看看owner是不是和当前运行的php是否一样,如果不一样,就会出现这个界面。
› 继续阅读
Search
相关文章
热门文章
最新文章
文章分类
- ajax (10)
- algorithm-learn (3)
- Android (6)
- as (3)
- computer (86)
- Database (30)
- disucz (4)
- enterprise (1)
- erlang (2)
- flash (5)
- golang (3)
- html5 (18)
- ios (4)
- JAVA-and-J2EE (186)
- linux (144)
- mac (10)
- movie-music (11)
- pagemaker (36)
- php (50)
- spring-boot (2)
- Synology群晖 (2)
- Uncategorized (6)
- unity (1)
- webgame (15)
- wordpress (33)
- work-other (2)
- 低代码 (1)
- 体味生活 (40)
- 前端 (21)
- 大数据 (8)
- 游戏开发 (9)
- 爱上海 (19)
- 读书 (4)
- 软件 (3)