Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

打包成动态库的时候64位报错 #3

Open
LiJingBiao opened this issue Jun 26, 2016 · 11 comments
Open

打包成动态库的时候64位报错 #3

LiJingBiao opened this issue Jun 26, 2016 · 11 comments

Comments

@LiJingBiao
Copy link

image

@DaidoujiChen
Copy link
Owner

Hello @LiJingBiao,

要找時間看一下, 但是不確定有解.

@LiJingBiao
Copy link
Author

@DaidoujiChen 我看了一下你那个demo也是,不能在64位真机上运行

@DaidoujiChen
Copy link
Owner

Hello @LiJingBiao,

嗯嗯, 對, 我自己用的時候也遇到過這個問題.

@LiJingBiao
Copy link
Author

@DaidoujiChen 你可以看看BlocksKit 它里面的实现好像和你的不大一样

@DaidoujiChen
Copy link
Owner

我來看看呦!

@LiJingBiao
Copy link
Author

@DaidoujiChen https://github.com/steipete/Aspects 这个也是用block,不知道对你有帮助没有

@DaidoujiChen
Copy link
Owner

哈哈 @LiJingBiao, 其實前陣子我也有大概看一下 Aspects 這個項目, 我本來也想寫一個類似的功能, 但是工作比較忙所以一直擱著.

@LiJingBiao
Copy link
Author

你这个工具绝对是调试利器,只是知道的人不多,我准备把它嵌入到我们APP Debug工具中,今天打包的时候,发现不支持64位,大神期待你完善它 @DaidoujiChen

@DaidoujiChen
Copy link
Owner

Hello @LiJingBiao,

剛剛花了一點時間看過 BlocksKitAspects, 似乎兩種都沒有針對 block 切入的方法, BlocksKit 好像是一些 block 的擴展, 而 Aspects 的重點在 method 上.

說回來, 目前應該是沒有辦法解決這個問題, runtime 上面, 結尾是 _stret 系列, 回傳值為 struct 的 function 基本上在 arm64 下都不能用了.

比較消極的做法是忽略 block 回傳 struct 這件事, 直接把他 mark 起來.....

//self.invoke = (IMP)_objc_msgForward_stret;

暫時先掛著吧, 也許以後會有解...

@LiJingBiao
Copy link
Author

不好意思,我又来叨挠你了(最后一次),JSPatch 实现原理详解 https://segmentfault.com/a/1190000003870981 也说到Struct,你看看管用不管用
image

@DaidoujiChen
Copy link
Owner

Hello @LiJingBiao,

客氣, 多討論我覺得不是什麼壞事, 這篇我有看到, 出現在這邊 JSPatch. 這篇的重點是在於非 arm64 下, 判斷回傳值是否為 struct. 我們現在遇到的是, 已經確定在 arm64 下了, 且回傳值必為 struct 的情況, 然後 _objc_msgForward_stret 不給用.

不過, 我有直接在 arm64 下改用 _objc_msgForward, 但是程序會直接崩掉, 我在想不知道是不是在其他部分也許有我沒有處理好的地方, 這我還要再花時間看一下, 如果你有發現什麼新的解法, 也可以再 update 一下, 感恩.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants