小编Par*_*fna的帖子

CFSTR内存管理

我正在使用CFSTR函数从常量c字符串创建CFString,我在我的守护进程中经常调用此函数.

来自文档:
CFSTR返回的值具有以下语义:

  1. 从CFSTR返回的值不会被CFString释放 - 它们在程序终止之前保证有效.
  2. 您可以以平衡的方式保留和释放从CFSTR返回的值,就像任何其他CFString一样,但您不需要这样做.

我应该使用保留和释放吗?

memory-management objective-c core-foundation

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

没有XCode的可可

我想开发Mac应用程序,但不想使用XCode.我有很多理由......

  1. 这很慢......
  2. 情况很复杂...
  3. Interface Builder看起来像是作弊,并不那么令人满意.(我知道,老学校)
  4. 整个开发人员工具集占用大量空间并需要很长时间才能下载(同时减慢我的其余计算机速度)

我知道这是可能的,因为我看过一些用gcc编译的脚本.有没有教程?有什么提示吗?我知道如何运行它,但我只需要帮助学习如何在没有XCode为我编写代码的情况下使用它.这是一个好计划,还是注定要失败?

ide macos cocoa gcc objective-c

6
推荐指数
3
解决办法
4281
查看次数

对象在已经解除分配时过度释放; 打破objc_overrelease_during_dealloc_error进行调试

我在子类中使用强大IBOutlet的自定义但是在切换视图控制器后我在10.11上崩溃了.在10.8,10.9和10.10上一切正常.我正在使用ARC.PDFViewNSViewController

self.activeRootViewController = controller;
self.backgroundWindow.contentView = controller.view;

@property (strong) IBOutlet MYPDFView* pdfView; // property inside NSViewController subclass.
Run Code Online (Sandbox Code Playgroud)

MYPDFView对象0x10ac1bc50在已经解除分配时被过度释放; 打破objc_overrelease_during_dealloc_error进行调试

我已添加断点objc_overrelease_during_dealloc_error但无法解决此问题.

有人可以帮帮我吗?

dealloc 方法MYPDFView只被调用一次.

来自lldb的Backtrace:

objc[23395]: MYPDFView object 0x10ac1bc50 overreleased while already deallocating; break on objc_overrelease_during_dealloc_error to debug
Process 23395 stopped
* thread #1: tid = 0x11b04b, 0x00007fff926bcb1c libobjc.A.dylib`objc_overrelease_during_dealloc_error, queue = 'com.apple.main-thread', stop reason = breakpoint 1.1 2.1
    frame #0: 0x00007fff926bcb1c libobjc.A.dylib`objc_overrelease_during_dealloc_error
libobjc.A.dylib`objc_overrelease_during_dealloc_error:
->  0x7fff926bcb1c <+0>: retq   
    0x7fff926bcb1d <+1>: nop    

libobjc.A.dylib`objc_object::sidetable_lock:
    0x7fff926bcb1e <+0>: movl   %edi, …
Run Code Online (Sandbox Code Playgroud)

iphone cocoa objective-c ios automatic-ref-counting

6
推荐指数
0
解决办法
5793
查看次数

Finder使文件资源分叉无法复制的任何方法?

有没有办法让资源分叉不可复制?特别是我通过NSWorkspace通过NSWorkspace设置一个特定目录中包含的文件的自定义徽章图标– setIcon:forFile:options:,我希望这些徽章一旦被复制到文件夹之外就会丢失.

cocoa icons macos-carbon objective-c nsworkspace

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

Cocoa NSTextField行间距

我正在努力解决一个非常简单的问题,我有几个NSTextField(我现在不能使用NSTextView),我需要更改显示文本的行间距.我该怎么做才能减少行高或行间距?缩小字体大小不是一种选择.

任何帮助将非常感激!

周末愉快,

!)

cocoa objective-c nstextfield nstextfieldcell

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

检查NSDecimalNumber是否为整数

检查实例NSDecimalNumber是否为整数是最简单的方法是什么?

谢谢!

iphone objective-c nsdecimalnumber ios

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

NSHashTable计数错误报告非空

我正在使用弱对象NSHashTable报告计数为1,即使它是空的.以下是lldb输出显示我的情况.

p [__operationWaitList count]
(NSUInteger) $4 = 1

p [__operationWaitList.allObjects count]
(NSUInteger) $7 = 0
Run Code Online (Sandbox Code Playgroud)

我最好的猜测是count计算存储在NSHashTable中的弱引用的数量,而不是有效对象的数量.通过调用allObjects然而,我正在取消引用没有有效对象的指针,因此生成的对象数组为空.

我想确认这一点,因为文档在这一点上有点缺乏.

macos cocoa objective-c ios nshashtable

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

如何在运行时检查Mac OS X版本

我使用下面的代码在运行时检查OS X版本.

if (floor(NSAppKitVersionNumber) <= NSAppKitVersionNumber10_10)
{
    /* On a 10.10.x or earlier system */
}
Run Code Online (Sandbox Code Playgroud)

但是这个条件在10.10.4 OS X上返回false.我正在使用Xcode 6.3.2.

在此输入图像描述

根据适用于OS X v10.11的AppKit发行说明,它应该可以工作.

if (floor(NSAppKitVersionNumber) <= NSAppKitVersionNumber10_9) {
  /* On a 10.9.x or earlier system */
} else if (floor(NSAppKitVersionNumber) <= NSAppKitVersionNumber10_10) {
  /* On a 10.10 - 10.10.x system */
} else {
  /* 10.11 or later system */
}
Run Code Online (Sandbox Code Playgroud)

macos cocoa objective-c nsapplication osx-elcapitan

4
推荐指数
2
解决办法
5189
查看次数

什么是形式协议对象的使用

我们可以在源代码中创建协议对象但是使用正式的Protocol对象是什么?

Protocol *myObj = @protocol(protocolName);
Run Code Online (Sandbox Code Playgroud)

design-patterns objective-c ios

3
推荐指数
1
解决办法
180
查看次数

NSRunLoop正在消耗大量的CPU和内存

我有一个无限循环驱动我的工作线程.

-(void) myThread
{
    NSAutoreleasePool *pool=[[NSAutoreleasePool alloc] init];   
    while(![myThread isCancelled])
    {
        [[NSRunLoop currentRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:600]];
    }
    [pool release];
}
Run Code Online (Sandbox Code Playgroud)

但有时候这些线程占用了很多CPU(50-100%)和内存(1.5GB).当我在这种状态下对应用程序进行采样时,我得到了以下跟踪

    453 +[NSDate dateWithTimeIntervalSinceNow:]
          309 -[__NSPlaceholderDate initWithTimeIntervalSinceReferenceDate:]
            295 CFDateCreate
              268 _CFRuntimeCreateInstance
                115 malloc_zone_malloc
                  64 __spin_lock
                    64 __spin_lock
                  43 szone_malloc
                    22 tiny_malloc_from_free_list
                      22 tiny_malloc_from_free_list
                    19 szone_malloc
                    2 spin_unlock
                      2 spin_unlock
                  4 malloc_zone_malloc
                  3 dyld_stub__spin_unlock
                    3 dyld_stub__spin_unlock
                  1 dyld_stub__spin_lock
                    1 dyld_stub__spin_lock
                99 __bzero
                  99 __bzero
                29 malloc_size
                  23 szone_size
                    23 szone_size
                  6 malloc_size
                13 CFAllocatorAllocate
                  13 CFAllocatorAllocate
                12 _CFRuntimeCreateInstance
              20 CFDateCreate
              4 CFDateGetTypeID …
Run Code Online (Sandbox Code Playgroud)

cocoa objective-c cfrunloop nsrunloop

3
推荐指数
1
解决办法
1550
查看次数