<div dir="ltr"><div class="gmail_default" style="font-family:georgia,serif">​I don&#39;t know why the limit exists. Technical or on purpose. I hope someone inside can answer this.</div><div class="gmail_default" style="font-family:georgia,serif"><br></div><div class="gmail_default" style="font-family:georgia,serif">Zhaoxin​</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Mon, Sep 12, 2016 at 11:55 PM, Daniel Dunbar via swift-users <span dir="ltr">&lt;<a href="mailto:swift-users@swift.org" target="_blank">swift-users@swift.org</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class=""><br>
&gt; On Sep 11, 2016, at 6:12 PM, Tanner Nelson via swift-users &lt;<a href="mailto:swift-users@swift.org">swift-users@swift.org</a>&gt; wrote:<br>
&gt;<br>
&gt; Hey Swift Users,<br>
&gt;<br>
&gt; I was wondering how you all work around not being able to add stored properties in extensions (especially protocol extensions).<br>
&gt;<br>
&gt; I ran into an issue recently where I needed an internal stored variable for a protocol, but I didn&#39;t want the conformer to worry about implementing the variable.<br>
&gt;<br>
&gt; I ended up using something like this to achieve the effect.<br>
&gt;<br>
&gt;    extension MyProtocol {<br>
&gt;        private var address: String {<br>
&gt;            mutating get {<br>
&gt;                var id = &quot;&quot;<br>
&gt;                withUnsafePointer(to: &amp;self) { id = &quot;\($0)&quot;}<br>
&gt;                return id<br>
<br>
</span>BTW, you can write `return withUnsafePointer(to: &amp;self) { &quot;\($0)&quot; }` instead.<br>
<span class=""><br>
&gt;            }<br>
&gt;        }<br>
&gt;<br>
&gt;        var myStoredVar: Bool {<br>
&gt;            mutating get {<br>
&gt;                return _storage[address] ?? false<br>
&gt;            }<br>
&gt;            set {<br>
&gt;                _storage[address] = newValue<br>
&gt;            }<br>
&gt;        }<br>
&gt;    }<br>
&gt;<br>
&gt; Obviously not ideal, but I don&#39;t see another way to achieve this besides subclassing (which has its own problems for my situation).<br>
&gt;<br>
&gt; Wondering if anyone has run into this and come up with a better solution or other type of work around.<br>
<br>
</span>I don&#39;t have a better answer to this part.<br>
<br>
This particular solution only works if it is ok for `_storage[address]` to potentially be reused by a new instance, though (if the old instance is deallocated and the new one is allocated in its place).<br>
<br>
 - Daniel<br>
<div class="HOEnZb"><div class="h5"><br>
&gt;<br>
&gt; Thanks!<br>
&gt; Tanner<br>
&gt; ______________________________<wbr>_________________<br>
&gt; swift-users mailing list<br>
&gt; <a href="mailto:swift-users@swift.org">swift-users@swift.org</a><br>
&gt; <a href="https://lists.swift.org/mailman/listinfo/swift-users" rel="noreferrer" target="_blank">https://lists.swift.org/<wbr>mailman/listinfo/swift-users</a><br>
<br>
______________________________<wbr>_________________<br>
swift-users mailing list<br>
<a href="mailto:swift-users@swift.org">swift-users@swift.org</a><br>
<a href="https://lists.swift.org/mailman/listinfo/swift-users" rel="noreferrer" target="_blank">https://lists.swift.org/<wbr>mailman/listinfo/swift-users</a><br>
</div></div></blockquote></div><br></div>