小编MrM*_*age的帖子

将标题视图添加到类似于Safari和文章的UIWebView

我想添加一个标题视图,UIWebView类似于MobileSafari中的地址/搜索栏和Sophia Teutschler的优秀Articles.app.更准确地说,我想在UIWebView上创建一个"拉动修复方向"视图,就像在文章中一样.文章确实使用UIWebView,所以它似乎是可能的.有没有办法做到这一点,而不必嵌入UIWebViewUIScrollView和更新其大小所有的时间,如在这篇文章?显然,我确实需要滚动事件来使"拉动修复方向"相应地表现出来.

iphone objective-c mobile-safari uiwebview uiscrollview

21
推荐指数
2
解决办法
9888
查看次数

什么是"新(和可变)价值;" 在C++中呢?

假设我在C++程序中有以下代码:

Object a = Object(someParameters);
new (&a) Object(someOtherParameters);
Run Code Online (Sandbox Code Playgroud)

我的假设是它取代了awith 的内容Object(someOtherParameters),避免了可能的operator=声明Object.它是否正确?

c++ operators new-operator

17
推荐指数
2
解决办法
326
查看次数

将选择器排入运行循环 - 是[NSObject performSelector:withObject:afterDelay:]的方法吗?

我希望在当前方法通过并且UI已更新之后执行一个方法.为此,我现在正在使用[object performSelector:@selector(someSelector) withObject:someObject afterDelay:0.0].根据Apple的文档,这会创建一个NSTimer,然后触发并将选择器附加到当前的NSRunLoop.但我不认为这很优雅.有没有一种简单的方法可以直接将选择器排入当前的运行循环,而不会让Cocoa创建一个Timer等?

performSelectorOnMainThread:withObject:waitUntilDone:(如果我在主线程),或者performSelector:onThread:withObject:waitUntilDone:waitUntilDone:NO做我想做的开销更少?

欢呼并提前谢谢

MrMage

iphone cocoa cocoa-touch objective-c runloop

9
推荐指数
1
解决办法
4858
查看次数

在我的macOS二进制文件中对所有框架运行`strip -S -x`是否有缺点?如果没有,我该如何自动化该过程?

我注意到strip -S -x在我的应用程序'Frameworks'文件夹中的二进制文件上运行(删除所有调试和所有本地符号)使它们缩小了约25%,即使我在构建设置中启用了调试符号的剥离.

另请注意,这使得Swift支持库也变得更小,并且看起来没有用于去除它们的构建设置.另外,我甚至不能100%确定我的"剥离调试符号"设置是否正确(即实际上导致调试符号被剥离),因为它nm --debug-syms仍然显示了大量符号,并且strip -S(删除调试符号表)仍然使它们变小.我的条带设置似乎是您在Internet上找到的推荐设置:

  • 部署后处理:是的
  • 复制期间剥离调试符号:否(无论如何都没有效果,因为框架已经在那时签署了代码)
  • 剥离链接产品:是的
  • 条带样式:调试符号

但运行是否有任何不良副作用strip -S -x,例如以后无法表示堆栈跟踪?

此外,如何在构建过程中自动执行此剥离,同时保持最终代码签名不变?似乎添加-Xlinker -x -Xlinker -S到我的"其他链接器标志"将此过程应用于当前项目的二进制文件(包括框架),但不应用于我的依赖项目中的框架(例如CocoaPods).这是特别相关的,因为相应地修改我包含的CocoaPods项目的构建设置并不容易.如上所述,它也与Swift支持库dylibs相关,它们也没有这样的链接器选项,但仍然受益于这种剥离.

xcode frameworks strip dylib debug-symbols

9
推荐指数
0
解决办法
327
查看次数

如何获取与AXUIElement对应的Objective-C类名?

Apple的Accessibility Inspector工具显示与当前检查的UI元素对应的Objective-C类.请参NSButtonCell见此屏幕截图的最底部:

Accessibility Inspector截图

但是,如何在我自己的代码中提取此信息?Apple七年之久的UIElementInspector示例代码中的辅助功能方法不会显示元素的类名.

对Accessibility Inspector进行反向工程,暗示可以通过AXClassName属性获取Objective-C类名,但该属性对我来说总是零.

macos accessibility objective-c accessibility-api appkit

8
推荐指数
1
解决办法
347
查看次数

如何获得iPhone OS 3.1低沉的键盘声音?

我已将iPhone的Tock声音添加到我自己的自定义键盘中,如下所示:

NSString *path = [[NSBundle bundleWithIdentifier:@"com.apple.UIKit"] pathForResource:@"Tock" ofType:@"aiff"];
SystemSoundID soundID;
AudioServicesCreateSystemSoundID((CFURLRef)[NSURL fileURLWithPath:path], &soundID);
AudioServicesPlaySystemSound(soundID);
// we don't dispose of the sound to keep the sound in the cache for the next time
//AudioServicesDisposeSystemSoundID(soundID);
Run Code Online (Sandbox Code Playgroud)

然而,在iPhone OS 3.1中,键盘Tock声音已被低沉,例如比其他声音更安静,而不是3.0.我的方法的声音仍然很响,并且音量最大.我怎样才能获得与iPhone默认键盘相同的音量?

顺便说一句,Twitterrific中的Tock声音适当地低沉.

干杯

MrMage

iphone keyboard audio objective-c core-audio

7
推荐指数
1
解决办法
2504
查看次数

Swift:如何完全去除内部/内嵌符号?

我需要在Swift中编写一些许可证检查代码。我知道Swift首先不是那种代码的最佳选择,因为它很难混淆。但是,如果需要知道应用程序是否已注册的代码是用Swift编写的,那还是比将许可证检查代码放在可以互换的单独框架中更好。

为了使攻击代码更加困难,我试图通过至少删除与代码相关的符号来使代码模糊。

为此,我有一些具有内部可见性的内联方法,如下所示:

@inline(__always) static func checkLicense() { /* license checking code */ }
Run Code Online (Sandbox Code Playgroud)

鉴于应始终内联该方法,因此无需在二进制文件的符号表中包括该方法的名称。(我知道inline注释通常仅是编译器的提示,但我有理由相信它们在这种情况下确实有效。)

与此nm MyApp.app/Contents/MacOS/MyApp相符,不包含对的引用checkLicense。但是,的输出strings MyApp.app/Contents/MacOS/MyApp仍然包含对checkLicense,而且恐怕攻击者可能会使用该信息来更容易地攻击许可证检查代码。

这是我的问题:

  1. 这些字符串会帮助攻击者吗?或者,如果没有相应的符号信息,这些字符串将毫无用处( nm吗?)吗?
  2. 下面列出的剥离设置(特别是剥离所有符号)会在运送代码时(例如,尝试对堆栈跟踪进行符号化)引起问题吗?我确实保留了已发送二进制文件的dSYM。
  3. 将“执行单对象预链接”设置为“是”有助于混淆代码吗?我看到的唯一效果是dSYM的大小从〜8 MB缩小到〜6 MB。

我目前正在使用以下构建选项:

  • 部署后处理=是
  • 带状链接产品=是
  • 使用分隔条=是
  • 条形样式=所有符号
  • 其他链接器标志=“ -Xlinker -x”
  • 执行单对象预链接=否(请参见上文)

linker llvm debug-symbols swift

6
推荐指数
1
解决办法
469
查看次数

使用CGAffineTransform缩放上下文中的所有点时保留线宽

我有一个CGPath我想绘制的坐标系.这样做涉及将旧坐标系缩放到Context的坐标系上.为了这个目的,我使用CGContextConcatCTM()它确实转换所有点.但是,由于它是缩放操作,水平/垂直线宽变为.例如,在x方向上为10,但在y方向上为1,将导致垂直线的厚度是水平线的10倍.有没有办法保持翻译矩阵的易用性(例如CGAffineTransform),但不能同时缩放线宽,例如像CGPathApplyAffineTransformToPoints

干杯

MrMage

core-graphics cgcontext cgaffinetransform cgpath stroke

5
推荐指数
2
解决办法
1582
查看次数

运送Default.png图像时,Ad Hoc部署失败

我遇到了一个问题,我无法通过TestFlight安装我的应用程序的Ad Hoc版本.应用程序下载,但在安装步骤中显示"无法安装YourApp",控制台上显示以下消息:

Sep 17 16:08:24 unknown installd[4767] <Error>: 00381000 verify_signer_identity: Could not copy validate signature: -402620393
Sep 17 16:08:24 unknown installd[4767] <Error>: 00381000 preflight_application_install: Could not verify executable at /var/tmp/install_staging.2wYy1J/foo_extracted/Payload/PocketCASbeta.app
Sep 17 16:08:24 unknown com.apple.itunesstored[4764] <Notice>: MobileInstallationInstall: failed with -1
Sep 17 16:08:24 unknown installd[4767] <Error>: 00381000 install_application: Could not preflight application install
Sep 17 16:08:24 unknown installd[4767] <Error>: 00381000 handle_install: API failed
Sep 17 16:08:24 unknown installd[4767] <Error>: 00381000 send_message: failed to send mach message of 71 bytes: 10000003 …
Run Code Online (Sandbox Code Playgroud)

code-signing default.png ad-hoc-distribution ios testflight

5
推荐指数
1
解决办法
627
查看次数

如何使NSPopover正确地按照鼠标指针并忽略鼠标事件?

我想显示一个NSPopover跟踪用户鼠标光标的信息.

为此,我使用an NSTrackingAreapositioningRectmouseMoved事件触发时更新popover .

但是,这有两个缺点:

  1. popover跟随鼠标略有延迟.如何减少此延迟以使弹出窗口更加"粘在"鼠标指针上?
  2. 当我沿着弹出方向移动鼠标指针时,mouseExited会调用跟踪区域的方法,这会导致弹出窗口"吸收"鼠标移动事件,从而mouseMoved不再触发跟踪区域的事件.如何避免弹出窗口吸收鼠标事件,或者至少保持转发这些事件?

这个问题非常类似于围绕这个NSTrackingArea怪癖的任何方式?,由于我正在使用的区别NSPopover,所以我没有什么可以继续ignoresMouseEvents下去.

macos cocoa appkit nswindow nspopover

5
推荐指数
1
解决办法
637
查看次数