1 | 1.调用 -release :引用计数变为零 |
好的文章总是见解独到,功底深厚而逻辑清晰。这是一篇关于如何设计、架构代码的文章。文章的观点新颖而有力。作者的观点是,我们所做的一切 —— 重构、模块化、分层,等等,都是为了让我们的代码易于被删改,都是为了让遗留代码不成为我们的负担,而不是为了代码复用。
//取self指针地址
NSString *fooString = [NSString stringWithFormat: @"%ld", (long)self];
long address = [fooString longLongValue];
//指针转对象
TestClasss *newInstance = (TestClasss *)address;
//测试对象是否成功
[TestClasss testFunc];
最近在项目中遇到一个问题ios7以下的设备才会出现:
attibuteLabel 增加了自定的link,事件增加上去了。颜色没有变化。
进过debug发现。
kCTForegroundColorAttributeName
NSForegroundColorAttributeName
这两个属性在ios7+的设备是等价的。
但是在ios7-分别代表不同的属性。
使用方法:新建一个catogary,把下面代码分别拷贝到.h和.m文件中,
介绍:foundation框架的参数错误,数组越界等异常捕获,确保app不会崩溃。
方法:运行时技术,在运行时将系统方法替换为我们自己实现的方法
ps:本文只实现了foundation库的部分方法,其实还可以尝试实现UIKit的方法,实现页面数据和用户行为统计等
.h文件内容如下:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20#import <Foundation/Foundation.h>
@interface NSArray (swArray)
- (id)sw_objectAtIndex:(NSUInteger)index;
@end
@interface NSMutableArray (swMutableArray)
- (id)sw_objectAtIndex:(NSUInteger)index;
- (void)sw_insertObject:(id)anObject atIndex:(NSUInteger)index;
@end
@interface NSMutableDictionary (swMutableDictionary)
- (void)sw_setObject:(id)anObject forKey:(id<NSCopying>)aKey;
@end
转载:起底多线程同步锁(iOS)
1、@synchronized(){}
Objective-C同步语法能够实现对block内的代码片段加锁, 可以指定任意一个Objective-C对象(id指针)作为锁“标记”,该语法将“标记”理解为token;
2、NSLock、NSRecursiveLock:
典型的面向对象的锁,即同步锁类,遵循Objective-C的NSLocking协议接口,前者支持tryLock,后者支持递归(可重入);
3、NSCondition、NSConditionLock:
基于信号量方式实现的锁对象,前者提供单独的信号量管理接口,相比后者用法上可以更为灵活,而后者在接口上更为直接、实用;
转载:放肆地使用UIBezierPath和CAShapeLayer画各种图形
1 | let path = UIBezierPath(rect: CGRectMake(110, 100, 150, 100)) |