mac上的触发角是啥意思?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mac上的触发角是啥意思?相关的知识,希望对你有一定的参考价值。

可能很多Mac用户对于系统中的“触发角”(Hot corners)这个概念很陌生。今天小编来给大家介绍一下这个比较“冷门”的功能。

什么是触发角?

根据软件界面设计中的可视化费茨定律(Fitts’s Law),位于屏幕边缘的按钮比其他地方的更容易点击,因为你的鼠标无法逾越处于那个位置的目标。做为操作系统用户界面元素中最为重要的两个——菜单栏和 Dock 栏,设计者需要确保用户能快速的访问它们。因此 Mac OS X 系统将菜单栏设计在屏幕最上方,而将 Dock 放置在最下方。

为了进一步延伸屏幕边缘的可用性,Mac OS X 系统提供一个功能,允许用户将屏幕的四个角落变成可激活功能的目标。通过设置以后,用户可以随意的将鼠标移到任意角落来调出不同的功能,如 Mission Control,Dashboard,Launchpad,屏幕保护、睡眠状态等等。

如何设置触发角?

设置触发角功能很简单,进入系统偏好设置下的桌面与屏幕保护程序 ,点击窗口右下角的触发角(Hot Corners)即可。



在弹出的触发角设置面板上,如何设置就一目了然了。用户可以通过下拉列表选择分别对屏幕的四个角落进行设置,可以设置的功能有:Mission Control、应用程序窗口(显示某应用当前所有窗口)、显示桌面、Dashboard、Launchpad、启动/停用屏幕保护程序、将显示器置入睡眠状态。



你可以将四个触发角设置成你用起来最顺手的状态。如上图设置,当你需要查看桌面内容的时候,可以轻松的将鼠标光标滑向左下角来完成。而且值得注意的一个人性化设计是,你在进行拖拽操作时触发角的对应功能并不会触发。也许在刚开始接触这个功能的时候,你觉得它是个“烦人”的功能,但是随着时间的推移相信你会觉得它的确是个“实用”的功能。当然,或许大多数人认可这一点,而不是全部。

苹果旗下的 Mac OS X 桌面操作系统,和其他优秀的操作系统一样经过了多年的打磨,系统中充满着用户往往没有意识到的小技巧和实用功能。相信习惯了 Windows 系统的用户在转换到 Mac OS X 系统后,而对于使用 Mac OS X 系统有一段时间的果迷或许会觉得“触发角”有时候过于灵敏,显得有点烦人。不管你是属于哪一种情况,循序渐进的了解一下“触发角”功能,说不定你会找到你要的答案哦!

参考技术A 云子守护让windows也有触发角功能; 国内第一款实现了触发角功能的软件.类似苹果Mac系统的触发角功能,用户可自定义让鼠标触碰到屏幕的四个角来实现以下功能:1.显示桌面; 2.切换上一应用程序(类似ALT+Tab键); 3.调用任务管理器; 4.调用自己定义的快捷键 参考技术B 鼠标移过去就知道了哦本回答被提问者采纳

当我使用 nm 查看 Mac 上的符号列表时,$ld$add$os10.4$ 前缀是啥意思?

【中文标题】当我使用 nm 查看 Mac 上的符号列表时,$ld$add$os10.4$ 前缀是啥意思?【英文标题】:what does the $ld$add$os10.4$ prefix mean when I use nm to look at a symbol list on a Mac?当我使用 nm 查看 Mac 上的符号列表时,$ld$add$os10.4$ 前缀是什么意思? 【发布时间】:2012-04-25 10:12:52 【问题描述】:

我的 iPhone 应用程序无法链接到 iPhone 模拟器时遇到一些问题。它告诉我有未定义的符号:

Undefined symbols for architecture i386:
  ".objc_class_name_NSRunLoop", referenced from:
      pointer-to-literal-objc-class-name in SampleBrowser.cpp.o
  ".objc_class_name_NSDate", referenced from:
      pointer-to-literal-objc-class-name in SampleBrowser.cpp.o
  ".objc_class_name_NSAutoreleasePool", referenced from:
      pointer-to-literal-objc-class-name in SampleBrowser.cpp.o
      pointer-to-literal-objc-class-name in libRenderSystem_GLES2Static.a(OgreEAGL2Window.mm.o)
  ".objc_class_name_UIApplication", referenced from:
      pointer-to-literal-objc-class-name in SampleBrowser.cpp.o
      pointer-to-literal-objc-class-name in libOIS.a(iPhoneInputManager.mm.o)
  ".objc_class_name_NSObject", referenced from:
      .objc_class_name_AppDelegate in SampleBrowser.cpp.o
  ".objc_class_name_UIView", referenced from:
      .objc_class_name_SampleBrowserGestureView in SampleBrowser.cpp.o
      .objc_class_name_InputDelegate in libOIS.a(iPhoneInputManager.mm.o)
      .objc_class_name_EAGL2View in libRenderSystem_GLES2Static.a(OgreEAGL2View.mm.o)
  ".objc_class_name_UIScreen", referenced from:
      pointer-to-literal-objc-class-name in libOIS.a(iPhoneInputManager.mm.o)
      pointer-to-literal-objc-class-name in libRenderSystem_GLES2Static.a(OgreEAGL2Support.mm.o)
  ".objc_class_name_UIAccelerometer", referenced from:
      pointer-to-literal-objc-class-name in libOIS.a(iPhoneInputManager.mm.o)
      pointer-to-literal-objc-class-name in libOIS.a(iPhoneAccelerometer.mm.o)

但这些看起来像我 AM 链接的框架中的 Objective-C 类的名称。我想做一些挖掘工作,所以我使用 nm 查看我链接的框架的符号列表。比如

josh$ nm /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator5.1.sdk/System/Library/Frameworks/Foundation.framework/Foundation -arch i386 -g | grep objc_class
001a4500 S $ld$add$os10.4$.objc_class_name_NSArray
001a4501 S $ld$add$os10.4$.objc_class_name_NSCalendar
001a4502 S $ld$add$os10.4$.objc_class_name_NSData
001a4503 S $ld$add$os10.4$.objc_class_name_NSDate
001a4504 S $ld$add$os10.4$.objc_class_name_NSDateComponents
001a4505 S $ld$add$os10.4$.objc_class_name_NSDictionary
001a4506 S $ld$add$os10.4$.objc_class_name_NSEnumerator
001a4507 S $ld$add$os10.4$.objc_class_name_NSException
001a4508 S $ld$add$os10.4$.objc_class_name_NSInputStream
001a4509 S $ld$add$os10.4$.objc_class_name_NSInvocation
001a450a S $ld$add$os10.4$.objc_class_name_NSLocale
001a450b S $ld$add$os10.4$.objc_class_name_NSMethodSignature
001a450c S $ld$add$os10.4$.objc_class_name_NSMutableArray
001a450d S $ld$add$os10.4$.objc_class_name_NSMutableData
001a450e S $ld$add$os10.4$.objc_class_name_NSMutableDictionary
001a450f S $ld$add$os10.4$.objc_class_name_NSMutableSet
001a4510 S $ld$add$os10.4$.objc_class_name_NSNull
001a4511 S $ld$add$os10.4$.objc_class_name_NSObject
001a4512 S $ld$add$os10.4$.objc_class_name_NSOutputStream
001a4513 S $ld$add$os10.4$.objc_class_name_NSRunLoop
001a4514 S $ld$add$os10.4$.objc_class_name_NSSet
001a4515 S $ld$add$os10.4$.objc_class_name_NSStream
001a4516 S $ld$add$os10.4$.objc_class_name_NSTimeZone
001a4517 S $ld$add$os10.4$.objc_class_name_NSTimer
001a4548 S $ld$add$os10.4$.objc_class_name_NSURL
001a4518 S $ld$add$os10.4$.objc_class_name_NSUserDefaults
001a4549 S $ld$add$os10.5$.objc_class_name_NSURL
001a454a S $ld$hide$os10.4$.objc_class_name_NSFileWrapper
001a454b S $ld$hide$os10.5$.objc_class_name_NSFileWrapper
001a454c S $ld$hide$os10.6$.objc_class_name_NSFileWrapper

现在,这个符号列表让我觉得框架档案正在导出链接器正在寻找的类。唯一不同的是这个 $ld$add$os10.4$ 前缀。我想知道它为什么会出现,这意味着什么,这是否可能导致了我的问题?

编辑: 看起来这是我的问题: Link errors in Xcode when targeting iPhoneSimulator

简而言之,省略编译器标志 -fobjc-abi-version=2 会导致符号命名不同。

【问题讨论】:

我的猜测是 os10.4 代表“OS X”(“X”是罗马数字“十”)。 我认为就编号而言相同,但为什么只有一些符号以这种方式前缀(即不是_NSRunLoopCommonModes,_OBJC_CLASS_$_NSRunLoop等),更重要的是,为什么链接器寻找无前缀符号? 我发现苹果在哪里打印出这些符号。请参阅this 开源苹果 c 文件。注意第二个extern const char 声明,很诡异,嗯? 【参考方案1】:

我对 iOS SDK 不是很了解,但你为什么要为“i386”编译?几天前,我在玩 PhoneGap 时遇到了类似的问题。我刚刚从我的 XCode 项目设置中删除了“i386”,之后在模拟器中一切似乎都运行良好。虽然我可能是错的。

【讨论】:

我一直认为 i386 是 sim。事实上,我所有项目的构建设置都将其作为标准拱门之一。【参考方案2】:

$ld$add$osXX.X$SYMBOL 是一个链接器指令,允许重定向库中的符号解析。该命令位于二进制文件的 __DATA 部分,并在链接时由ld 解析,以更改导出符号的可见性。 OS X 上的链接器实际上接受了很多不同类型的这些命令:

$ld$hide$osXX.X$SYMBOL 将该符号添加到忽略集中。链接器将不再将该符号导出到与库链接的任何二进制文件,即使它可能具有全局可见性。

$ld$add$osXX.X$SYMBOL 在链接时将该符号添加到二进制文件中,无论是否存在定义。

$ld$install_name$osXX.X 将特定二进制文件中的符号定义重定向到另一个二进制文件。这用于解决 OS X 中 CoreGraphics 曾经作为 ApplicationServices 的子框架存在的问题。现在所有符号都被重定向到正确的框架。

$ld$compatibility_version 强制与早期版本的链接器兼容。

就您而言,您遇到了 Foundation 中的兼容性问题。 OS X 将 NSFileWrapper 导出到 AppKit 中,直到 10.7 之后该符号从那里隐藏并移至 Foundation。通常,这意味着 AppKit 的作者会隐藏类定义的 _OBJC_CLASS_$、_OBJC_METACLASS_$ 和 _OBJC_IVAR_$ 部分,以使链接器在别处查找该符号。但是,因为您删除了 -fobjc-abi-version 标志,所以编译器默认返回旧的 1.x ABI,它只需要隐藏和查找您尝试链接的二进制文件中可能不存在的 .objc_class_name

至于您未定义的符号,这是一个简单的文件扩展名问题。 .cpp 是 c++ only 文件,(这意味着没有 NSRunloop、MSMutableArray、NSObject 等)。如果您希望访问这些对象,请将有问题的文件重命名为扩展名为 .mm,这是一个标准的 objC++ 文件。链接并导入 QuartzCore(用于 EAGL2View)和 UIKit(用于 UIScreen 和朋友以及 UIAccelerometer)也是一个好主意。

【讨论】:

我构建了一个新应用程序,其中主类是 .mm,但我仍然收到这些错误。这可能是使用 llvm-gcc 而不是 clang 的问题吗? 为一个好的答案加分......虽然我猜现在我知道这个问题很愚蠢。 实际上它们不是“编译器函数”,而是静态链接器的元数据。见opensource.apple.com/source/ld64/ld64-136/src/ld/parsers/…,寻找“隐藏”

以上是关于mac上的触发角是啥意思?的主要内容,如果未能解决你的问题,请参考以下文章

路由器上的MAC地址是啥意思?如果终端连另一个路由器MAC地址会变吗?

Mac 上的Python 3.3.0 IDLE 出现了Warning,请问是啥意思?

IBM小机中的WWN号是啥意思

电脑的mac地址是啥意思?

使用随机mac是啥意思

zigbee mac层是啥意思