类的定义:
ClassName.h ClassName.m

对该类进行分类拓展
ClassName+category.h,ClassName+category.m
因为对比较复杂的业务进行多次分类拓展
ClassName+category1.h,ClassName+category1.m
ClassName+category2.h,ClassName+category2.m
ClassName+category2.h,ClassName+category2.m
。。。。

类有对外开放的属性
@public
可以这样:
@interface ClassName:baseClass{
@public
vartype varname;
...
}

也可以这样:
@property(属性修饰) vartype varname;
。。。
还可以这样:《这样写在分类是》
@interface ClassName(category)
@property(属性修饰) vartype Catvarname;//这里的属性需要用runtime来实现setter & getter.
....

对于不想对外公开的属性怎么办,但又需要对分类公开呢?
这个时候+extenstion的重要性来了。
文件名:ClassName+private.h //+后面你起的名字
@interface ClassName()
@property(属性修饰) vartype privateVarname;
...

这样一个完整的类的结构就出来了。
你学废了吗?