<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>TIL@gettoset_channel | Ethan’s Life</title><description>Here’s Ethan’s Life, where I share articles, photos and ideas. By @e1hanw0ng.</description><link>https://channel.ethanwong.me</link><item><title>生词#TIL@gettoset_channel</title><link>https://channel.ethanwong.me/posts/194</link><guid isPermaLink="true">https://channel.ethanwong.me/posts/194</guid><pubDate>Sat, 21 Mar 2026 10:58:20 GMT</pubDate><content:encoded>&lt;div&gt;
      
        &lt;img src=&quot;https://cdn5.telesco.pe/file/ANc_Px8G4nPc1OdWblit6GSTJRukxakX3Lw6G5avzgC9Ea2DgEVIFOS57XysjA8Z5SRO8VmMYtGBzMB5SaaZm8fgO2Ke2rwvzs7MtN_HzAD3JEBMBLaNn4ZIbt26N4oXDKmN9cA4nkNyU71kbyiE0ww6h3njHmJWmzqRtLtgFMOlA539JJJ4R9vwLB4TzaPyzVeUqfy64cewwfElqHpPFkxjFQ-qc_X0jTFOLtdEhMzlkoFllWh2zgyUT6IrGn_uUcGMszvNMPr3c38sXaguXyHvbyQf-xzVDWpKVpXvikP3q20-j10u4qeQNEzFtAfW53s-qWHSDsXLy7X8ZM1T2A.jpg&quot; alt=&quot;生词#TIL@gettoset_channel&quot; loading=&quot;lazy&quot; /&gt;
      
      
        
      
    &lt;/div&gt;生词&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;/search/%23TIL%40gettoset_channel&quot;&gt;#TIL@gettoset_channel&lt;/a&gt;</content:encoded></item><item><title>🔗 NotificationQueue and Custom Dispatch Source Coalescing</title><link>https://channel.ethanwong.me/posts/178</link><guid isPermaLink="true">https://channel.ethanwong.me/posts/178</guid><pubDate>Thu, 04 Dec 2025 12:40:55 GMT</pubDate><content:encoded>&lt;i&gt;&lt;b&gt;🔗&lt;/b&gt;&lt;/i&gt; NotificationQueue and Custom Dispatch Source Coalescing&lt;br /&gt;&lt;a href=&quot;https://mjtsai.com/blog/2025/11/14/notificationqueue-and-custom-dispatch-source-coalescing/&quot; target=&quot;_blank&quot;&gt;https://mjtsai.com/blog/2025/11/14/notificationqueue-and-custom-dispatch-source-coalescing/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;/search/%23TIL%40gettoset_channel&quot;&gt;#TIL@gettoset_channel&lt;/a&gt;&lt;a href=&quot;https://mjtsai.com/blog/2025/11/14/notificationqueue-and-custom-dispatch-source-coalescing/&quot; target=&quot;_blank&quot;&gt;
  
  &lt;div&gt;Mjtsai&lt;/div&gt;
  
  &lt;div&gt;Michael Tsai - Blog  -  NotificationQueue and Custom Dispatch Source Coalescing&lt;/div&gt;
  
&lt;/a&gt;</content:encoded></item><item><title>SPM 生成的 resource bundle accessor 的 Objc 版本对比 Swift 版本竟然少了一段实现</title><link>https://channel.ethanwong.me/posts/166</link><guid isPermaLink="true">https://channel.ethanwong.me/posts/166</guid><pubDate>Mon, 20 Oct 2025 15:30:52 GMT</pubDate><content:encoded>&lt;div&gt;
      
        &lt;img src=&quot;https://cdn5.telesco.pe/file/ZGhILoTDQLcInAB9gmjZxXSRcMB1Esakbwka_VgzRmhLW3c3pSS2RxOxp2o8Qdrt_OYldlbK8sRFjGVRyTPZ1BQBMbZv8913OhgsIZ7Su-4W5XgXr7JK1FOb2Kjz04oekNsDO0hwdp7CDq52BdcAxmng1D9LnBMl33SWJQHTaYxQQNn9-PVrj0V68Gx05k2h597y47PpIh-l2ZT3jT0OFebGCAm_Ul3Dvivung-7K0noAocGAjhgRI9lQaLG9f_KSLi7-ZQNdCCSswPKzMyP4VOTCpdFQUCwQ5V2fC-OSHbNNUcGLjKBXM3Nfay7UgU0xwlI8I4pIh8H28MjcyRC8g.jpg&quot; alt=&quot;SPM 生成的 resource bundle accessor 的 Objc 版本对比 Swift 版本竟然少了一段实现&quot; loading=&quot;lazy&quot; /&gt;
      
      
        
      
    &lt;/div&gt;SPM 生成的 resource bundle accessor 的 Objc 版本对比 Swift 版本竟然少了一段实现。会导致 preview 运行起来的时候找不到资源 bundle 然后挂掉。&lt;i&gt;&lt;b&gt;😜&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;/search/%23TIL%40gettoset_channel&quot;&gt;#TIL@gettoset_channel&lt;/a&gt;</content:encoded></item><item><title>NSWindow 有一个属性叫做 releasedWhenClosed 默认值为 YES 表示 close 调用会把自己释放掉</title><link>https://channel.ethanwong.me/posts/153</link><guid isPermaLink="true">https://channel.ethanwong.me/posts/153</guid><pubDate>Fri, 01 Aug 2025 12:11:34 GMT</pubDate><content:encoded>&lt;div&gt;
      
        &lt;img src=&quot;https://cdn5.telesco.pe/file/bBk7tTzvvUJCgmYA-UoYIj14udTEK57YR7wL5DIGJ9VHdzNy9RS_Mm1_PbaT5NxdTWbIDGnDHZfQ_ZVBlgUnVKVrN584Z_PWM_IeofPxyq7xGbicP46VEcZY9DsEh-EAfjUtXHknW3mIWnZfpPNgCTOQCGqVfo9h92HUAV4nh2OBbrUS7T1jb9CbE0PBkUoeuKcibi74-_SIB668rMlqOKgblYAe4aP-iQMEf9av5T_pKVPBisjfscCovdL2gYxPazpJfxit6qxxHSP451nP_YC0c-_oXcRnIth47Pme9CQZyPVNHulmHZ2ihPkQBbnWTMAj6-wHTQaLcqT8ej16rQ.jpg&quot; alt=&quot;NSWindow 有一个属性叫做 releasedWhenClosed 默认值为 YES 表示 close 调用会把自己释放掉&quot; loading=&quot;lazy&quot; /&gt;
      
      
        
      
    &lt;/div&gt;NSWindow 有一个属性叫做 releasedWhenClosed 默认值为 YES 表示 close 调用会把自己释放掉。如果有逻辑持有了 window 的引用，随后在 close 之后的某个时候将它释放了，就会出现 double release 导致程序挂掉&lt;i&gt;&lt;b&gt;😔&lt;/b&gt;&lt;/i&gt;。&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;/search/%23TIL%40gettoset_channel&quot;&gt;#TIL@gettoset_channel&lt;/a&gt;</content:encoded></item><item><title>查问题逆向之后打算 swizzle 一个 Objc 方法，发现它不能被 performSelector 调用，仔细看汇编发现竟然是静态派发的</title><link>https://channel.ethanwong.me/posts/145</link><guid isPermaLink="true">https://channel.ethanwong.me/posts/145</guid><pubDate>Thu, 10 Jul 2025 13:40:33 GMT</pubDate><content:encoded>&lt;a href=&quot;/posts/144&quot;&gt;&lt;blockquote&gt;&lt;small&gt;
&lt;div&gt;
  &lt;span&gt;Ethan’s Life&lt;/span&gt;
&lt;/div&gt;
&lt;div&gt;&lt;i&gt;&lt;b&gt;🔗&lt;/b&gt;&lt;/i&gt; Objective-C Direct Methods https://nshipster.com/direct/&lt;/div&gt;
&lt;/small&gt;&lt;/blockquote&gt;&lt;/a&gt;查问题逆向之后打算 swizzle 一个 Objc 方法，发现它不能被 performSelector 调用，仔细看汇编发现竟然是静态派发的。研究了一圈才知道有 direct method 这种特性。&lt;i&gt;&lt;b&gt;🤯&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;/search/%23TIL%40gettoset_channel&quot;&gt;#TIL@gettoset_channel&lt;/a&gt;</content:encoded></item><item><title>Dont Steal Mac OS.kext</title><link>https://channel.ethanwong.me/posts/132</link><guid isPermaLink="true">https://channel.ethanwong.me/posts/132</guid><pubDate>Wed, 18 Jun 2025 16:24:27 GMT</pubDate><content:encoded>Dont Steal Mac OS.kext&lt;br /&gt;&lt;a href=&quot;https://theapplewiki.com/wiki/Dont_Steal_Mac_OS.kext&quot; target=&quot;_blank&quot;&gt;https://theapplewiki.com/wiki/Dont_Steal_Mac_OS.kext&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;/search/%23TIL%40gettoset_channel&quot;&gt;#TIL@gettoset_channel&lt;/a&gt;&lt;a href=&quot;https://theapplewiki.com/wiki/Dont_Steal_Mac_OS.kext&quot; target=&quot;_blank&quot;&gt;
  
  &lt;div&gt;The Apple Wiki&lt;/div&gt;
  &lt;img class=&quot;link_preview_image&quot; alt=&quot;Dont Steal Mac OS.kext&quot; src=&quot;https://cdn4.telesco.pe/file/jX8dw43mugqfrk4Tpu4ADRvNQcqq0JdPGGLMJIbVHurFsc-yA2eBipuSraWXugveKiuK_xPGWnwHWpyvYRgISrmWNLv7NRdXZtu2EpFiAVVN9NupFsM9wYCv0Gd5DVZ7nWw_SjVsy8-M_wAr136DVlOx1m401nSNC_bktQNBAzOrFXcmPWj3g9dBDTb4whmnUSn8BPHzmW0njpuAq6O-BA9VRwrHz8Z81XRowv7EQeL4OjelJrntU4cWVlsnqYs7VK9HZmxd748QKa7V-RGQk6hm3M7ym7d2uDIsYjWO7KbLlsjqxI0ERP5ZZNOdpAm8C7IM3jWqL5SPfkRMoLfpMQ.jpg&quot; loading=&quot;lazy&quot; /&gt;
  &lt;div&gt;Dont Steal Mac OS.kext&lt;/div&gt;
  &lt;div&gt;Dont Steal Mac OS.kext (&quot;DSMOS&quot;) is a kernel extension added in Mac OS X 10.4.4 that prevents the operating system from running on unauthorized Intel hardware. Its...&lt;/div&gt;
&lt;/a&gt;</content:encoded></item></channel></rss>