Objective c 指针和整数之间的有序比较 -(无效)解除锁定 { [_id_list release]; [super dealoc]; } -(作废)更新{ CFArrayRef ar=CGWindowListCopyWindowInfo(kcGWindowListoOptionnScreenOnly,kCGNullWindowID); cfyref窗口; CFI指数; cgid-wid; [_id_list release]; _id_list=[[NSMutableArray alloc]init]; 对于(i=0;i

Objective c 指针和整数之间的有序比较 -(无效)解除锁定 { [_id_list release]; [super dealoc]; } -(作废)更新{ CFArrayRef ar=CGWindowListCopyWindowInfo(kcGWindowListoOptionnScreenOnly,kCGNullWindowID); cfyref窗口; CFI指数; cgid-wid; [_id_list release]; _id_list=[[NSMutableArray alloc]init]; 对于(i=0;i,objective-c,xcode,macos,Objective C,Xcode,Macos,对于最后一行,Xcode给出错误: “语义问题:指针和整数('CFIndex'(又名'long')和'CFDictionaryRef'(又名'const struct uu CFDictionary*')之间的有序比较” 特别是,它警告说: 我看见窗户了 “表达式不可赋值” 基本上,我正在尝试获取桌面的WindowID(仅限壁纸)。 为什么会发生这种情况?这是: - (void) dealloc { [_id_list release]; [super dealloc]; } - (v

对于最后一行,Xcode给出错误:

  • “语义问题:指针和整数('CFIndex'(又名'long')和'CFDictionaryRef'(又名'const struct uu CFDictionary*')之间的有序比较”
特别是,它警告说:

  • 我看见窗户了

  • “表达式不可赋值”

基本上,我正在尝试获取桌面的WindowID(仅限壁纸)。 为什么会发生这种情况?

这是:

- (void) dealloc
{
[_id_list release];
[super dealloc];
}

- (void)update {
CFArrayRef ar = CGWindowListCopyWindowInfo(kCGWindowListOptionOnScreenOnly, kCGNullWindowID);
CFDictionaryRef window;
CFIndex i;
CGWindowID wid;

[_id_list release];
_id_list = [[NSMutableArray alloc] init];

for (i=0; i < window =" CFArrayGetValueAtIndex(ar," name =" (NSString*)CFDictionaryGetValue(window," owner_name =" (NSString*)CFDictionaryGetValue(window,");}
这:


忽略在for循环中有一些疯狂的事情发生的事实,编译器抱怨是因为:

for ( assignment-expr; comparison-expr ; increment-expr )
{
    body-of-for-loop
}
这部分:

CFDictionaryRef window;
CFIndex i;
i

将索引(long)与字典进行比较是没有意义的。

忽略for循环中存在一些疯狂的东西这一事实,编译器正在抱怨,因为:

for ( assignment-expr; comparison-expr ; increment-expr )
{
    body-of-for-loop
}
这部分:

CFDictionaryRef window;
CFIndex i;
i

将索引(long)与字典进行比较是没有意义的。

将int(或任何其他“标量”)与指针进行比较是没有意义的。任何CFxxxRef值都是指针。此外,
window=“CFArrayGetValueAtIndex(ar)”
没有意义——您正在尝试将字符字符串分配给CFDictionaryRef。(或者你粘贴的时候有没有搞错源代码?):要获取桌面墙纸的唯一ID,我知道这与
CGWindowListCopyWindowInfo
有关,但除此之外,我不知道…将int(或任何其他“标量”)与指针进行比较是毫无意义的。任何CFxxxRef值都是指针。此外,
window=“CFArrayGetValueAtIndex(ar,”
毫无意义——您试图将一个字符字符串分配给CFDictionaryRef(或者粘贴源代码时是否对其进行了篡改?):要获得桌面墙纸的唯一ID,我知道这与
CGWindowListCopyWindowInfo
有关,但除此之外,我不知道。。。