ok guys , there is simple and elegant solution to solve this :)
little explanation :
On iOS for arm64, the isa field of Objective-C objects is no longer a pointer.
Some of the bits still encode the pointer to the object's class. But neither OS X nor iOS actually uses all 64 bits of virtual address space. The Objective-C runtime may use these extra bits to store per-object data like its retain count or whether it has been weakly referenced.
They changed "this" to 64bit becouse performance. Re-purposing these otherwise unused bits increases speed and decreases memory size. On iOS 7 the focus is on optimizing retain/release and alloc/dealloc.
from that REASON DON'T
1. read obj->isa directly. The compiler will complain if you do. Trust the Compiler. The Compiler is your friend. Use [obj class] or object_getClass(obj) instead.
2.Don't write obj->isa directly. Use object_setClass() instead.
from that reason you need to change "way" you setting in 2 methods .
example .
-
(NSInteger)subRow
{
id myclass = [SKSTableView class];
id subRowObj = objc_getAssociatedObject(myclass, SubRowObjectKey);
return [subRowObj integerValue];
} -
(void)setSubRow:(NSInteger)subRow
{
id subRowObj = [NSNumber numberWithInteger:subRow];id myclass = [SKSTableView class];
objc_setAssociatedObject(myclass, nil, subRowObj, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
}
so put example for setSubRow and subRow , id myclass = [SKSTableView class];
objc_getAssociatedObject(myclass, SubRowObjectKey);
and
for objc_setAssociatedObject(myclass, nil, subRowObj, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
self-->isa IS PROBLEM on arm64 on iOS .
This works for 32bits and 64bit arch :)