小编Mat*_*oal的帖子

写入 Main Bundle 目录。允许吗?

我很确定在 iOS 中不可能在主 Bundle 中写入......例如像这样的操作:

NSString *path = [[NSBundle mainBundle] pathForResource:@"Data" ofType:@"plist"];
.....something
[xmlData writeToFile:path atomically:YES];
Run Code Online (Sandbox Code Playgroud)

为什么Apple 文档中的第一个示例使用这个确切的代码?

objective-c nsbundle ios

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

无法激活的OS X应用程序?

最近,我尝试了ColorSnapper应用程序,并且注意到它可以保持其他应用程序处于活动状态。

(检查下面的屏幕,因为您可以看到野生动物园窗口仍处于活动状态,并且ColorSnapper也保持活动状态)。

在此处输入图片说明

怎样才能再现这种效果?

macos cocoa

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

从 C++ 应用程序创建 OSx .app

我使用命令行工具项目模板创建了一个 OpenGL 应用程序。现在输出项目显然是一个 unix 可执行文件。

我的问题是如何将此可执行文件转换为捆绑包 .app?我需要添加另一个目标吗?

macos xcode

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

使NSTableCellView可编辑

我创建了一个基于视图 NSTableView的单列.此列填充了NSTableCellViewInterface Builder 的标准(我选择了带有图像和文本字段的版本).

现在我想使列中的文本字段可编辑.

我的第一次尝试是修改" NSTextField接口"构建器并将其行为设置为Editable.它确实有效,当我选择一行时,我推动enter key该字段变得可编辑,我可以改变它的值.我认为我可以通过某种NSTableViewDataSource方法 来拦截这种变化,tableView:setObjectValue:forTableColumn:row:但是这种方法永远不会在文本字段编辑操作的响应中被调用.

在基于视图的NSTableView系统中处理可编辑字段的正确方法是什么?我想它NSTableViewDataSource与它有关但我不知道如何调用它的方法.

macos cocoa nstableview

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

从NSAttributedString获取属性词典

如何获取NSAttributedString的属性?

我想使用enumerateAttributesInRange:NSMakeRange(0, str.length)然后保存NSMutableDictionaries中的每个属性,但我想知道是否存在更好的方法.

编辑------我的问题是我有一个NSAttributedString,我想在它的属性上使用这个函数...

CTFramesetterSuggestFrameSizeWithConstraints(framesetter,range, __ATTRIBUTES__, size , NULL);
Run Code Online (Sandbox Code Playgroud)

objective-c

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

设置包含Pods的项目,将在CocoaPods上发布

我正处于这种情况......我正在开始一个新的SDK,我想通过CocoaPods发布,SDK本身需要一些Pods(AFNetworking)我想知道哪个是设置项目的最佳方式,因为我需要尝试编写示例项目时的SDK.

我的第一次尝试是从pod lib create命令开始的.我遵循了所有指令,最终得到了一个完整的工作区,非常棒!现在我怎么包括AFNetworking?我必须使用以下方法将其作为依赖项添加到mySDK.podspec文件中:s.dependency 'AFNetworking', '~> 3.0'这样我的SDK的用户也可以将它包含在库中,非常棒.但是如何将它包含在我当前的项目中以便在开发期间使用它?

我看到,创建的CocoaPods"示例"文件夹下我有一个Podfile,但它仅包含的例子和测试目标......我想这里包括SDK目标,但它似乎并没有这样的.

source 'https://github.com/CocoaPods/Specs.git'
use_frameworks!

target 'MYSDK_Example', :exclusive => true do
  pod 'MYSDK', :path => '../'
end

target 'MYSDK_Tests', :exclusive => true do
  pod 'MYSDK', :path => '../'

  pod 'Specta'
  pod 'Expecta'
end
Run Code Online (Sandbox Code Playgroud)

我试图包含下一个配置并再次启动pod install ...

target 'MYSDK', :exclusive => true do
    pod 'AFNetworking', '~> 3.0'
end
Run Code Online (Sandbox Code Playgroud)

我得到一个通用的可怕错误,无论如何它听起来不是很好的解决方案.

这是lib create命令创建的结构,我应该添加一个新的Podfile来包含我开发库所需的库?

 MyLib
  ??? _Pods.xcproject
  ??? Example
  ?   ??? MyLib
  ?   ??? MyLib.xcodeproj …
Run Code Online (Sandbox Code Playgroud)

ios cocoapods

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

TARGET_OS_IOS、TARGET_OS_TV 和模拟器

我已经将一个 iOS 应用程序“移植”到 Apple TV 上,因为我真的想尽可能共享资源,所以我不得不将一些代码行用于 iOS,将一些其他代码行用于 TVOS。我试过类似的东西:

#if TARGET_OS_TV
Run Code Online (Sandbox Code Playgroud)

#if TARGET_OS_IOS
Run Code Online (Sandbox Code Playgroud)

但是当我在 iOS 或电视模拟器上启动应用程序时,此代码不起作用。我以为 iPhone 模拟器只是在TARGET_OS_IOS...下执行代码,但我错了。哪个是针对 iOS 和 TV 操作系统保留模拟器正确执行的最佳方法?

我可能需要的代码示例是:

#if TARGET_OS_IOS 
    DoSomethingWithiOS() // This should work also on iOS sim
#elseif TARGET_OS_TV
    DoSomethingWithOSTV() // This should work also on TV sim
#endif
Run Code Online (Sandbox Code Playgroud)

xcode objective-c ios swift tvos

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

Swift 结合订阅、正确的流程和架构选择

让我们说:

• 我的应用程序是 Socket 服务器的客户端。

• 我可以自由编写 Socket 客户端实现以适应 Combine我喜欢

我已经实现了 2 个解决方案,一个使用CurrentValueSubject(非常简单),另一个使用自定义订阅和我不确定的自定义发布者。我真的不知道哪个是桥接我用来处理服务器消息的代码的最佳方法。

这是我的代码:

为了模拟套接字服务器,我创建了一个假的SocketServerManager,每秒钟生成一些事件N

protocol SocketServerManagerDelegate{
    func newEvent(event:String)
}

class SocketServerManager {

    let timing: Double
    var timerHandler:Timer? = nil
    var delegates:[SocketServerManagerDelegate] = []

    init(timing:Double){
        self.timing = timing
    }

    func start(){
        // Just start a timer that calls generateEvent to simulate some events
        timerHandler = Timer.scheduledTimer(withTimeInterval: timing, repeats: true){
            [weak self] _ in
            self?.generateEvent()
        }
        timerHandler?.fire()
    }


    private func generateEvent(){
        let events = …
Run Code Online (Sandbox Code Playgroud)

swift combine

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

使用CGREct和UIView进行CGAffineTransformMakeScale的行为

我有一个视图,框架定义为(0,0,320,480).
我在这个观点上调用转换:

self.myView.transform = CGAffineTransformMakeScale(factor, factor); 
Run Code Online (Sandbox Code Playgroud)

视图将缩放以保留屏幕上的中心位置,并且在我的更改之后它的帧将是例如(34,-8,251,376),因为您可以看到X和Y现在与0不同.

如果我在带有框架的CGRect上使用相同的功能(0,0,320,480):

CGAffineTransform t = CGAffineTransformMakeScale(factor,factor);
CGRect rect2 = CGRectApplyAffineTransform(rect,t);
Run Code Online (Sandbox Code Playgroud)

rect2将为X和Y保留0,我将得到类似于(0,0,251,376)的结果

为什么rect2的X和Y不会像在UIView示例中那样改变?

objective-c cgaffinetransform ios

4
推荐指数
1
解决办法
1万
查看次数

OS X应用程序的自动释放池在哪里创建并耗尽?

我正在为ARC重构我的OS X应用程序.打开main.m文件,我确信我会找到Autorelease Pool实例化和排空(比如iOS项目),但令我惊讶的是它不在那里.

所以我的第一个问题是:

  • 主要的Autorelease Pool在哪里?

我的下一个问题是:

  • 如果未创建主Autorelease Pool,是否需要创建它?或者以某种自动方式释放自动释放的对象?

macos cocoa autorelease nsautoreleasepool automatic-ref-counting

4
推荐指数
1
解决办法
942
查看次数