Demo:加号级别的成员方法的实现:
#import <Foundation/Foundation.h>
@interface Person:NSObject
{
int _age;
}
-(id)initWithAge:(int)age;
+(id)personWithAge:(int)age;
-(void)print;
@end
@implementation Person
-(id)initWithAge:(int)age
{
self = [super init];
if (nil != self) {
_age = age;
}
return self;
}
+(id)personWithAge:(int)age
{ //返回id类型和用到self是为子类考虑,子类继承Person,当调用该方法是返回的是子类的对象
//在+级别的方法中,一般用self
id obj = [[self alloc] initWithAge:age];
return [obj autorelease];
}
-(void)print
{
NSLog(@"age = %d",_age );
}
@end
@interface Student : Person
@end
@implementation Student
@end
int main (int argc, const char * argv[]) {
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
Person* p = [Person personWithAge:20];
[p print];
Student* stu = [Student personWithAge:30];
NSLog(@"%@", NSStringFromClass([stu class]));
[stu print];
[pool drain];
return 0;
}
NSLog可以如下面的方法使用:
NSLog (@"this is a test");
NSLog (@"string is :%@", string);
NSLog (@"x=%d, y=%d", 10, 20);
但是下面的写法是不行的:
int i = 12345;
NSLog( @"%@", i );
原因是, %@需要显示对象,而int i明显不是一个对象,要想正确显示,要写成:
int i = 12345;
NSLog( @"%d", i );
格式
NSLog的格式如下所示:
%@ 对象
%d, %i 整数
%u 无符整形
%f 浮点/双字
%x, %X 二进制整数
%o 八进制整数
%zu size_t
%p 指针
%e 浮点/双字 (科学计算)
%g 浮点/双字
%s C 字符串
%.*s Pascal字符串
%c 字符
%C unichar
%lld 64位长整数(long long)
%llu 无符64位长整数
%Lf 64位双字
虽然不同平台或标准中ColorMatrix的实现有所不同,但是基本原理和实现思路基本上是一样的。先分享几个链接,关于GDI+中ColorMatrix的实现原理:
上篇—ColorMatrix原理揭秘:http://tech.ddvip.com/2008-09/122095148662296.html
下篇—ColorMatrix的Delphi实现:http://tech.ddvip.com/2008-09/122095172462301.html
GDI+中的ColorMatrix是5X5的矩阵,而Android平台中实现的ColorMatrix则是(5X4, 此处有点问题,因为developer中ColorMatrix Class写的是5X4,但是介绍的时候其实是4X5,并且在ColorFilterColorMatrix中写的是4X5)4X5的矩阵,接着分享Android中ColorMatrix及Matrix详解:
http://www.cnblogs.com/dongtaochen2039/archive/2012/03/29/2423443.html
之所以ColorMatrix不用4X4的矩阵是因为4X4矩阵只能实现旋转、缩放等线性变换,而不能实现平移等非线性变换,
估计5X5和5X4都能完成非线性变换,具体还需要探讨下。。
PS:老说后续会补充,但是后续就忘记了。。