tips:
正文:
好在大部分用來打包.a檔案的原始檔都在gitlab上,我還能找到,這算是不幸中的萬幸
1、aes替換,無問題
2、asi替換,在」target」->」build phases」->」compile source」中所有asi 檔案的compile flags 設定」-fno-objc-arc」 相容arc
3、jsonkit替換,同2、
4、ziparchive替換,同2、
error1:
當到這裡的時候,編譯發現乙個錯誤」implicit declaration of function 『nsfiletypeforhfstypecode』 is invalid in c99」,
這是fmdb的問題,fmdatabaseadditions.m中存在如下一段**:我們需要在**的外面做預編譯處理
#if target_os_mac && !target_os_iphone // 新增預編譯處理
assert([s length] == 6);
s = [s substringwithrange:nsmakerange(1, 4)];
return s;
} fmresultset *rs = [self executequery:query];
[rs next];
[rs close];
} if ([s length] != 4)
}#endif // 結束
5、sqlcipher替換,重新配置了乙個,詳情見
error 2:
這個時候又出現了另乙個問題crash:
nsinvalidargumentexception -[__nstaggedpointerstring unsignedlonglongvalue]: unrecognized selector sent to instance
定位到實體中的字典轉模型方法中:
- (instancetype)initwithdictionary:(nsdictionary *)dictionary
else if (![obj isequal:[nsnull null]])
}];} return self;
}
這個問題,是因為64bit中,nsstring 中沒有unsignedlonglongvalue這個方法了, 而當字典中obj的型別是nsstring型別,實體中的key對應的屬性是nsuinteger型別,setvalue:obj forkey:key 會自動做如下處理:
[obj unsignedlonglongvalue] 將value轉為對應的屬性型別,這就導致64bit中找不到該方法而crash。我的解決是,對nsstring寫乙個category,重新寫乙個unsignedlonglongvalue的方法:
-(nsuinteger)unsignedlonglongvalue
或者 避免 讓系統做nsstring->nsuinteger的型別裝換 帶指標的通訊結構體32位與64位相容
最近做乙個移植專案,將32位上的vpn移植到64位環境上。由於當初設計未考慮可移植性,導致移植時出現了很多的問題,其中最典型的乙個問題就是通訊結構帶指標的問題。場景分析 如下的兩個結構體,其中b在通訊時做通訊結構使用 cpp view plain copy print?struct a struct...
iOS應用如何實現64位的支援
關於指令集如下參考 armv8 arm64 iphone 6 plus iphone 5s,ipad air 2 retina ipad mini 2,3 armv7s iphone 5,iphone 5c,ipad 4 armv7 iphone 3gs,iphone 4,iphone 4s,ipo...
iOS應用如何實現64位的支援
關於指令集如下參考 armv8 arm64 iphone 6 plus iphone 5s,ipad air 2 retina ipad mini 2,3 armv7s iphone 5,iphone 5c,ipad 4 armv7 iphone 3gs,iphone 4,iphone 4s,ipo...